平时我们可能有打通网络的需求,也就是建立隧道,比如两个建立两个只有内网IP机器的直连。openssh给我们提供了这个功能,但有时隧道可能不稳定,超时、网络波动等情况,这时就需要重新建立连接,而且每次要输入密码,比较麻烦,下面这个脚本可以让你高枕无忧了,把下面这个脚本丢入crontab中,每一个小时执行一次。
#!/bin/bash
HOST=root@110.110.110.110
PORT=58958
PASSWD=110
INTERNAL_IP=127.0.0.1
##usage : create tunel remote_port local_port internal_ip
function create_tunel(){
ps -ef | grep $HOST | grep -v grep | grep $1 | awk '{print "kill "$2}' | sh
/usr/bin/expect <<!
set timeout 5
spawn ssh -o ServerAliveInterval=10 -N -f -R $1:$3:$2 $HOST -p${PORT}
expect {
"*password:" { send "${PASSWD}\n" }
}
expect eof
!
}
##ssh
create_tunel 55359 22 127.0.0.1
##oracle
create_tunel 55363 1521 127.0.0.1
##mysql
create_tunel 55355 3306 127.0.0.1
##tomcat
create_tunel 55357 54321 127.0.0.1
#svn
create_tunel 55361 3690 127.0.0.1
crontab脚本如下:
[root@lyr myscripts]$>crontab -l
30 * * * * /root/myscripts/create_tunel.sh