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