Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在远程主机中终止ssh后需要重新启动ssh_Python_Ssh_Process_Signals_Pexpect - Fatal编程技术网

Python 在远程主机中终止ssh后需要重新启动ssh

Python 在远程主机中终止ssh后需要重新启动ssh,python,ssh,process,signals,pexpect,Python,Ssh,Process,Signals,Pexpect,我正在使用python中的pexpect对远程(linux)计算机执行ssh 我的脚本需要始终保持运行以从远程计算机获取一些日志。由于某些原因,远程计算机的管理员会定期使用pkill终止所有ssh连接(这是无法更改的) 远程计算机上的pkill将终止本地ssh,脚本退出。如何在代码中重新启动ssh并继续脚本 我认为我机器上的本地进程在终止ssh进程时会收到远程机器发出的叹息 但事实似乎并非如此。有什么建议吗?bash脚本的示例可能适合您。我在下面的示例脚本中使用了wait。刚刚检查过,为我工作

我正在使用python中的
pexpect
对远程(linux)计算机执行ssh

我的脚本需要始终保持运行以从远程计算机获取一些日志。由于某些原因,远程计算机的管理员会定期使用
pkill
终止所有ssh连接(这是无法更改的)

远程计算机上的pkill将终止本地ssh,脚本退出。如何在代码中重新启动ssh并继续脚本

我认为我机器上的本地进程在终止ssh进程时会收到远程机器发出的叹息


但事实似乎并非如此。有什么建议吗?

bash脚本的示例可能适合您。我在下面的示例脚本中使用了
wait
。刚刚检查过,为我工作

这将在本地计算机上反复出现
ssh
连接:

#!/bin/bash

sshpass -p "YourPassword" ssh -o StrictHostKeyChecking=no user@server &

while true
do
  wait `pidof ssh`
  sshpass -p "YourPassword" ssh -o StrictHostKeyChecking=no user@server
done
每当服务器运行时:

sudo pkill sshd

连接将再次启动

如果您没有
sshpass
,请安装它:


sudo-apt-get-install-sshpass

实际上我正在寻找一个Python解决方案。这也行得通。但我只需要异常处理就可以做到这一点。每当进程被终止时,我都能够捕获异常并调用我的函数,该函数重新创建了我需要的ssh句柄。