我试图让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)
答案 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)
('', '')