我有下面的脚本(1.1.1.1
上的test.py
)来在另一台服务器上运行另一个远程脚本(script.py
在 2.2.2.2
上)。我已经设置了 ssh key ,因此不会提示输入密码。
import subprocess
USER="user"
SERVER_IP="2.2.2.2"
SCRIPT_PATH="/home/abc/script.py"
print ("ssh {0}@{1} '/usr/bin/python {2} aaa bbb'".format(USER, SERVER_IP, SCRIPT_PATH))
rc = subprocess.check_output("ssh {0}@{1} '/usr/bin/python {2} aaa bbb'".format(USER, SERVER_IP, SCRIPT_PATH))
script.py
本身位于 1.2.3.4
上,并接受 2 个参数。
如果我复制脚本中打印出的命令,我可以在1.1.1.1
上成功执行script.py
。但是在 1.1.1.1
上运行 test.py
会出现错误:
OSError: [Errno 2] No such file or directory
我不明白为什么该脚本不起作用,但完全相同的命令可以自行运行。
最佳答案
使用附加参数:
shell=True
您的命令将是:
rc = subprocess.check_output("ssh {0}@{1} '/usr/bin/python {2} aaa bbb'".format(USER, SERVER_IP, SCRIPT_PATH),shell=True)
我假设您需要一个 shell 来运行 python 脚本。
关于python - 无法使用 Python ssh 运行远程脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51167584/