Paramiko运行脚本并退出

时间:2016-04-05 09:14:29

标签: linux python-2.7 paramiko

我试图让paramiko在外部机器上运行一个脚本并退出,但是有问题让它运行脚本。有谁知道为什么它没有运行脚本?我试图在VM上运行命令手册,但是有效。

command = "/home/test.sh > /dev/null 2>&1 &"

def start_job(host):

    try:
        client = paramiko.SSHClient()
        client.load_system_host_keys()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        client.connect(hostname, port=22, username=username, password=password)
        return client.exec_command(command)

    finally:
        client.close()

start_job(hostname)

1 个答案:

答案 0 :(得分:0)

首先,start_job函数中的参数或client.connect()的第一个参数上都有拼写错误。除此之外,只需在关闭连接之前返回stdout / stderr内容:

def start_job(hostname):

try:
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    client.connect(hostname, port=22, username=username, password=password)
    (_, stdout, stderr) = client.exec_command(command)
    return (stdout.read(), stderr.read())

finally:
    client.close()

在你的情况下,命令是将stderr重定向到stdout并在后台运行,所以我不会期望只返回两个空字符串:

start_job(hostname)
('', '')