这个网上搜索到的方案呢,一般都是弄一个 timeout 60,然后每 60 秒在这个 ssh 通道上发送一个空格过去,以维持 ssh 连接。。。但这个阻止不了网络异常或程序异常而导致的连接断开
于是乎俺把脚本简单的改了一下:
-
#!/usr/bin/expect
-
set timeout 60
-
while {1} {
-
spawn /usr/bin/ssh -NCD :8080 <a href="mailto:user@yourserver.com">user@yourserver.com</a>
-
expect {
-
"password:" { send "password\r" }
-
}
-
interact {
-
timeout 60 { send " " }
-
eof { exp_continue }
-
}
-
}
expect 执行一个无穷循环,检查 eof 事件,然后执行 exp_continue
Topic:
技术
评论
autossh
您不知道autossh有维持连接的功能吗...这个实现方法好丑
啊哦,我还真不知道 autossh 这个工具..
啊哦,我还真不知道 autossh 这个工具.. 不过这个脚本实现真的很丑吗?还不太会用 expect,呵呵
代理或者登陆服务器都有这个需求,我用下面的方法。 http
代理或者登陆服务器都有这个需求,我用下面的方法。
http://www.pgsqldb.org/mwiki/index.php/%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8C%81_SSH_%E8%BF%9E%E6%8E%A5