我正在使用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