J'ai besoin d'exécuter 2 commandes sur une machine distante (Ubuntu Maté 16,04) via SSH en utilisant un script Python.Python: Comment exécuter plus de 1 commande sur SSH sans vous reconnecter à chaque commande
run_pigpiod_remote
exécute un démon sur une RPi à distance, comme il est indiqué de # Line0 dans le code ci-dessous. # Line1 établit un lien SSH et exécute le démon pigpiod
selon les besoins.
Afin de vérifier l'exécution réussie, je souhaite utiliser pgrep -x pigpiod
comme indiqué dans # Line2. Comme # Line2 est écrit, je dois entrer à nouveau le mot de passe.
Comment puis-je éviter d'entrer le mot de passe tant de fois (entrée SSH, en cours d'exécution sudo
, et 3 pour # Line2)
def run_pigpiod_remote(adress):
if ip[0]==adress:
print(adress,"is a local machine")
run_pigpiod_local()
else: #Line0
print(adress," is a remote machine")
result = subprocess.run(['ssh','-t','[email protected]'+adress,'sudo','pigpiod']) #Line1
result2 = subprocess.run(['ssh','-t','[email protected]'+adress, "pgrep -x ", "pigpiod"]) #Line2
OK! ça fonctionne bien. C'est une bonne façon de le résoudre. Comment puis-je retirer le PID (pas seulement sur l'écran)? ce code de manière confirmera une exécution réussie. –
Essayez subprocess.check_output. https://docs.python.org/3.6/library/subprocess.html#subprocess.check_output Si votre ssh affiche quelque chose, vous pouvez vérifier la sortie et valider le succès de commande. – BoboDarph