我想在许多远程主机上运行一个程序,这些程序可能会运行几个小时,并且需要 root 权限,我已将程序上传到这些远程主机,我只能使用我的用户名 ssh 进入这些机器,但使用我的用户名我可以sudo
不用密码
现在我想编写一个自动化脚本来在这些主机上运行它们
基本上我需要类似这样的东西:
for remote_host in host_list:
run the program on remote_host
然后脚本就退出了。我试过了
ssh -t usr@remote_host "sudo /home/usr/program"
但这会阻止我的 shell,直到程序退出,所以我尝试
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
尝试:
ssh -t usr@remote_host 'sudo nohup bash -c "/home/user/program > /dev/null 2>&1 &"'
这nohup
应该允许您的 shell 退出而不终止您正在运行的程序。-t
如果您不想nohup.out
创建该文件,请放弃该选项。