【发布时间】:2011-10-09 04:33:03
【问题描述】:
我是 linux 的初学者,也是 ssh 和隧道的新手。
无论如何,我的目标是在后台保持一个开放的 ssh 隧道。
为了做到这一点,我编写了以下批处理,然后将其添加到 crontab 中(该批处理在工作日和上午 8 点到晚上 9 点每 5 分钟自动处理一次)。 我在stackoverflow的其他一些线程中读到应该使用autossh,这将确保ssh通过经常性检查总是可以的。我也是……
#!/bin/bash
LOGFILE="/root/Tunnel/logBatchRestart.log"
NOW="$(date +%d/%m/%Y' - '%H:%M)" # date & time of log
if ! ps ax | grep ssh | grep tunnelToto &> /dev/null
then
echo "[$NOW] ssh tunnel not running : restarting it" >> $LOGFILE
autossh -f -N -L pppp:tunnelToto:nnnnn nom-prenom@193.xxx.yyy.zzz -p qqqq
if ! ps ax | grep ssh | grep toto &> /dev/null
then
echo "[$NOW] failed starting tunnel" >> $LOGFILE
else
echo "[$NOW] restart successfull" >> $LOGFILE
fi
fi
我的问题是有时隧道会停止工作,尽管一切看起来都不错(ps ax | grep ssh > 结果显示了两个预期任务:autossh 主任务和 ssh 隧道本身)。我实际上知道这个问题,因为隧道被第三方软件使用,一旦隧道不再响应,就会触发错误。
所以我想知道我应该如何改进我的批次以便它能够检查隧道并在它碰巧死了时重新启动它。我在there 中看到了一些想法,但它是由“autossh”提示得出的……我已经使用了。因此,我没有想法......如果你们中的任何人有,我很乐意看看它们!
感谢您对我的问题感兴趣,以及您的(也许)建议!
【问题讨论】:
-
我认为你应该看看 serverfault.com。搜索
ssh或autossh示例:serverfault.com/questions/159766/…
标签: linux batch-file ssh