linux – 如何设置后台ssh隧道的自动(重新)启动
| 
                         我是 linux的初学者用户,也是ssh和隧道的新手. 无论如何,我的目标是在后台维护一个ssh隧道. 为了做到这一点,我编写了以下批处理,然后我将其添加到crontab中(批处理在工作日期间每隔5分钟自动处理一次,从早上8点到晚上9点). #!/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”提示结束的…我已经使用过了.因此,我没有想法……如果你们有任何人,我很乐意看看他们! 感谢您对我的问题和您(可能)的建议感兴趣! 解决方法您可以执行以下操作,而不是使用ps检查ssh进程创建脚本,执行以下操作并通过crontab -e将其添加到crontab #!/bin/sh
REMOTEUSER=username
REMOTEHOST=remotehost 
SSH_REMOTEPORT=22
SSH_LOCALPORT=10022
TUNNEL_REMOTEPORT=8080
TUNNEL_LOCALPORT=8080
createTunnel() {
    /usr/bin/ssh -f -N  -L$SSH_LOCALPORT:$REMOTEHOST:SSH_REMOTEPORT -L$TUNNEL_LOCALPORT:$REMOTEHOST:TUNNEL_REMOTEPORT $REMOTEUSER@$REMOTEHOST
    if [[ $? -eq 0 ]]; then
        echo Tunnel to $REMOTEHOST created successfully
    else
        echo An error occurred creating a tunnel to $REMOTEHOST RC was $?
    fi
}
## Run the 'ls' command remotely.  If it returns non-zero,then create a new connection
/usr/bin/ssh -p $SSH_LOCALPORT $REMOTEUSER@localhost ls >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
    echo Creating new tunnel connection
    createTunnel
fi 
 实际上,这个脚本将打开两个端口 >端口22,用于检查隧道是否仍然存在 请通过评论检查并向我发送更多问题 (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- linux – lockfile-create在bash脚本中不起作用
 - Linux 信号signal处理函数--转
 - java – 管理JDK的’替代’真的比Symlink和$PATH更好吗?
 - linux – MongoDB安装错误:“mongod:加载共享库时出错:l
 - linux – 从命令行下载图像
 - 如何在Linux Ubuntu 16上安装luasql?
 - Linux / Unix Command: bunzip2--reference
 - linux内核 – 在kmalloc标志中GFP的含义是什么?
 - osx – OS X arch命令不正确[已关闭]
 - linux-device-driver – add_disk()在insmod上挂起
 
