如何在远程 Linux 主机上以 root 权限运行程序

如何在远程 Linux 主机上以 root 权限运行程序

我想在许多远程主机上运行一个程序,这些程序可能会运行几个小时,并且需要 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创建该文件,请放弃该选项。

相关内容