在python中使用ssh从远程服务器运行脚本
我想从本地机器上运行python脚本。但是名为在python中使用ssh从远程服务器运行脚本,python,ssh,remote-access,remote-server,paramiko,Python,Ssh,Remote Access,Remote Server,Paramiko,我想从本地机器上运行python脚本。但是名为script.py的python脚本位于远程服务器中,它有一些参数和参数。 我试过: #!/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', passwo
script.py
的python脚本位于远程服务器中,它有一些参数和参数。
我试过:
#!/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\时,应将“带有引号的argument”和空格“
作为一个参数传递给另一个程序。虽然我不能保证帕拉米科总是做正确的事。你熟悉sys.argv
?您可以在脚本中使用它在终端中传递参数!是的,我是。。。但是在这个脚本中使用script.py的参数是可能的吗?如何传递?您可以在ssh.exec\u命令中传递它们!(但是我不确定这个函数是否支持它!)但是os.system
支持它!非常感谢。但是你把它放在答案部分的最后一个)
是什么?它恰好是ssh.exec\u命令调用的左括号