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

时间:2015-02-23 07:51:11

标签: 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', 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的参数?

1 个答案:

答案 0 :(得分:0)

由于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参数传递给其他程序。虽然我不会保证帕拉米科总能做正确的事。