在python中使用ssh从远程服务器运行脚本
我想从本地机器运行我的python脚本。但名为script.py
的python脚本位于远程服务器中,它具有一些参数和参数。 我曾尝试:在python中使用ssh从远程服务器运行脚本
#!/usr/bin/python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='x.x.x.x', port=22, username='root', password='passwd')
stdin, stdout, stderr=ssh.exec_command('python /root/file/script.py') #It has some argument I want to use them from my local machine
for i in stdout.readlines():
print i.strip('\r\n')
ssh.close()
script.py
有一些争论。我应该如何改变这个脚本以便从我的本地机器使用参数script.py
?
它比人会认为更靠谱,由于使用SSH不支持的参数列表:
import sys
try:
from pipes import quote # python 2
except ImportError:
from shlex import quote # python 3
ssh.exec_command('python /root/file/script.py ' +
' '.join([quote(i) for i in sys.argv[1:]])
)
当运行python myprogram.py argument\ with" quotes\" and spaces"
,这应该通过'argument with quotes" and spaces'
为1参数传递给其他程序。虽然我不会保证paramiko总是做正确的事情。
谢谢......但是,你把它放在回答部分中的最后一个''是什么? – MLSC 2015-02-23 08:04:41
它恰好是'ssh.exec_command'调用的悬挂右括号 – 2015-02-23 08:08:30
你熟悉'sys.argv'吗?你可以在脚本中使用它来传递终端中的参数! https://docs.python.org/2/library/sys.html#sys.argv – Kasramvd 2015-02-23 07:54:08
是的,我是...但在脚本中使用script.py的参数是可能的?怎么样? – MLSC 2015-02-23 07:59:08
你可以在'ssh.exec_command'函数中传递它们! (但我不知道这个功能支持!),但'os.system'支持! – Kasramvd 2015-02-23 08:04:01