gpt4 book ai didi

python - 远程命令不返回 python

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:28 24 4
gpt4 key购买 nike

我正在通过Python重新启动远程计算机,因为它是重新启动,当前的ssh session 被终止。请求不会被返回。不过我对返回不感兴趣。

os.command('sshpass -p 密码 ssh user@host restart')

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

我可以执行异步并忽略线程,还有其他简单的选择吗?

最佳答案

我很惊讶脚本没有返回。在重新启动之前,应通过 Remote 重置连接。您可以异步运行进程,一个问题是未由其父进程清理的子进程会成为僵尸进程(仍然占用进程表中的空间)。您可以添加一个计时器,让脚本有时间完成其肮脏的工作,然后在后台清理它。

请注意,我将该命令切换为参数列表并跳过设置 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...

关于python - 远程命令不返回 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com