Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用ssh从远程服务器运行脚本_Python_Ssh_Remote Access_Remote Server_Paramiko - Fatal编程技术网

在python中使用ssh从远程服务器运行脚本

在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

我想从本地机器上运行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', 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命令调用的左括号