1

Я хочу запустить программу на многих удаленных хостах, эти программы могут работать несколько часов, и для этого нужны права суперпользователя. Я загрузил программу на эти удаленные хосты. Я могу только ssh на эти машины под своим именем пользователя, но с моим именем пользователя я могу sudo без пароля

теперь я хочу написать скрипт автоматизации для запуска их на этих хостах

в основном мне нужно что-то вроде:

for remote_host in host_list:
     run the program on remote_host

и затем скрипт завершается. Я старался

ssh -t usr@remote_host "sudo /home/usr/program"

но это будет блокировать мою оболочку, пока программа не закроется, поэтому я попытался

ssh -t usr@remote_host "sudo /home/usr/program" &

это не работает, я использую ps -ef чтобы проверить и не найти процесс

Я также пробовал Python paramiko , но не удалось https://stackoverflow.com/questions/16085502/run-remote-program-with-root-priviledge-using-paramiko-ssh-channel

Я также хочу записать все выходные данные от запуска программы

кто-нибудь может дать какие-то решения? Спасибо

1 ответ1

4

Пытаться:

ssh -t usr@remote_host 'sudo nohup bash -c "/home/user/program > /dev/null 2>&1 &"'

nohup должен позволить вашей оболочке завершиться, не убивая программу, которую вы запускаете. Удалите опцию -t если вы не хотите, чтобы файл nohup.out создавался.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .