远程命令不返回python

远程命令不返回python,python,python-2.7,ssh,Python,Python 2.7,Ssh,我正在通过Python重新启动远程机器,因为这是一次重新启动,所以当前ssh会话被终止。请求未被返回。不过我对退货不感兴趣 命令('sshpass-p password sshuser@host重新启动') 代码正在执行重新启动,但是当前会话被终止,脚本永远不会返回 我可以进行异步,只需忽略线程,还有其他简单的选项吗?我很惊讶脚本没有返回。远程设备应在重新启动之前重置连接。您可以运行流程asyc,其中一个问题是未被父进程清理的子流程会变成僵尸(仍然会占用流程表中的空间)。您可以添加一个计时器,让

我正在通过Python重新启动远程机器,因为这是一次重新启动,所以当前ssh会话被终止。请求未被返回。不过我对退货不感兴趣

命令('sshpass-p password sshuser@host重新启动')

代码正在执行重新启动,但是当前会话被终止,脚本永远不会返回


我可以进行异步,只需忽略线程,还有其他简单的选项吗?

我很惊讶脚本没有返回。远程设备应在重新启动之前重置连接。您可以运行流程asyc,其中一个问题是未被父进程清理的子流程会变成僵尸(仍然会占用流程表中的空间)。您可以添加一个计时器,让脚本有时间做它的脏活,然后在后台清理它

请注意,我将该命令切换为参数列表,并跳过了设置
shell=True
。这只意味着不执行中间shell进程

import sys
import subprocess as subp
import threading
import timing

def kill_process(proc):
    # kill process if alive
    if proc.poll() is None:
        proc.kill()
        time.sleep(.1)
        if proc.poll() is None:
            sys.stderr.write("Proc won't die\n")
            return
    # clean up dead process
    proc.wait()

proc = subp.Popen(['sshpass', '-p', password, 'ssh', 'user@host', 'reboot')
threading.Timer(5, kill_process, args=(proc,))

# continue on your busy day...

好了,没有操作系统命令了;您实际使用的是什么,
os.system
也许?您是否尝试过
子流程。请改为选中\u call
?您能否详细说明您预期会发生什么?“请求未被返回”是什么意思?