在远程主机上终止ssh后,需要重新启动ssh



我正在使用pexpect in python对远程(linux)机器执行ssh操作。

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

远程机器上的pkill终止我的本地ssh,脚本退出。如何在代码中重新启动ssh并继续编写脚本?

我认为我机器上的本地进程在终止ssh进程时将收到来自远程机器的sighup。

但情况似乎并非如此。有什么建议吗?

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

最新更新