Ich möchte ein Programm auf vielen Remote-Hosts ausführen. Dieses Programm kann mehrere Stunden lang ausgeführt werden. Es benötigt Root-Rechte. Ich habe das Programm auf diese Remote-Hosts hochgeladen. Ich kann nur mit meinem Benutzernamen auf diese Computer zugreifen, aber mit meinem Benutzernamen kann ich sudo
ohne Passwort
Jetzt möchte ich ein Automatisierungsskript schreiben, um sie auf diesen Hosts auszuführen
im grunde brauche ich sowas wie:
for remote_host in host_list:
run the program on remote_host
und dann wird das Skript beendet. Ich habe es versucht
ssh -t usr@remote_host "sudo /home/usr/program"
Aber dies wird meine Shell blockieren, bis das Programm beendet wird, also habe ich es versucht
ssh -t usr@remote_host "sudo /home/usr/program" &
Es funktioniert nicht, ich benutze es ps -ef
, um zu überprüfen und keinen Prozess zu finden
Ich habe auch Python ausprobiert paramiko
, aber https://stackoverflow.com/questions/16085502/run-remote-program-with-root-privilegedge-using-paramiko-ssh-channel ist fehlgeschlagen
Ich möchte auch die gesamte Ausgabe vom Ausführen des Programms protokollieren
kann mir jemand einige lösungen geben? Vielen Dank
bash -c
"? Wäre "sudo nohup /home/user/program …
" nicht genauso gut?&
mit dem assoziiert wirdnohup
.-t
Option erforderlich, auch wenn Sie nicht möchten, dass dienohup.out
Datei erstellt wird.