openvp 客戶端 /home 目錄下各腳本文件名
[root@jira home]# ls openvpn_server_restart.sh openvpn_tunnel_monitor.sh
openvpn_tunnel_monitor.sh 為死循環腳本來檢測 tun0 網卡是否存在,若不存在,對服務器端 openvpn server 進行操作,更換port並重啟openvpn 服務,同時更改openvpn 客戶端port端口對應服務器port端口,同時重新啟動客戶端
cat openvpn_tunnel_monitor.sh
while [ 1 ]
do
tun0_route=`ifconfig|grep -ci "tun0"`
if [ $tun0_route -eq 0 ];then
echo "openvpn tunnel is down ,need do the restart operation." >> /tmp/openvpn_tunnel.log
ssh root@47*****27 'bash -x -s' < /home/openvpn_server_restart.sh
scp root@47******27:/etc/openvpn/server.conf /home
server_port=`cat /home/server.conf|grep -i "port"|grep -v "^#"|awk '{print $2}'`
sed -i "s@remote.*@remote 47*******27 $server_port@" /etc/openvpn/fanqiang001.conf
PID=`ps -fe|grep fangqiang001|grep -v grep|awk '{print $2}'`
if [ "$PID" ];then
ps -fe|grep fangqiang001|grep -v grep|awk '{print $2}'|xargs kill -9
echo "old openvpn client process is killed" >> /tmp/openvpn_tunnel.log
fi
source /etc/profile
cd /etc/openvpn
nohup /usr/sbin/openvpn --cd /etc/openvpn --config fanqiang001.conf --log-append /var/log/openvpn.log >> nohup.out 2>&1 &
sleep 5
new_pid=`ps -fe|grep openvpn|grep -v grep|awk '{print $2}'`
echo $new_pid
if [ "$new_pid" ];then
echo " openvpn client process started success !" >> /tmp/openvpn_tunnel.log
fi
fi
sleep 600
done
openvpn_server_restart.sh 腳本主要重新啟動openvpn server端
#!/bin/bash
server_port=`cat /etc/openvpn/server.conf|grep -i "port"|grep -v "^#"|awk '{print $2}'`
server_port=$((server_port+1))
sed -i "s@port.*@port $server_port@" /etc/openvpn/server.conf
service openvpn restart
配置后台運行腳本
sh openvpn_tunnel_monitor.sh & > /dev/null 2>&1
