动态 版块 发帖 消息 我的
小绿叶技术博客
小绿叶技术博客
小绿叶技术Lv154   
openvpn_connect.sh 拨号上网     


#!/bin/bash
# auto connect vpn . get internal network connection  [inˈ tər nl  in tor no 内部]


VPNfile=/datadisk/eisc/vpn/data.ovpn
pingIP=10.1.1.1


 chmod 777 $VPNfile

debList=(
openvpn
)

download_deb(){

   for i in ${debList[*]}
   do
      debname=`echo $i | awk -F"_" '{print $1}'`
      debnameInstalled=` dpkg -l | grep -w  "$debname" | awk -F" " '{print $2}' ` 
      debnameInstalledLength=${#debnameInstalled}

      if [ $debnameInstalledLength -gt 1 ]
      then 
         echo "[ok] 该包 $i 已经安装,安装信息: $debnameInstalled"
      else
         echo "[runing] 正在检查是否下载安装包: $i"
         if [ ! -e $i ]
         then 
            echo "[runing] 当前没有下载,正在下载包:$i"
            case "$i" in 
               "openvpn")     apt install -y openvpn    ;;
               *) echo "该包没有定义下载地址,包: $i"
            esac
         else
            echo  "[ok] 已经安装: $i "
         fi

      fi
   done
}

connect()
{
    echo "正在检测网络是否和 google 官方通畅......  "

    ping -c 2 $pingIP | grep from 
    if [ $? != 0 ]
    then					
        status="[running] google 网络不通,正在连接自建 openvpn 服务器..."
         killall openvpn ;  openvpn $VPNfile > /dev/null & 	
        sleep 20						
    else
        status="[ok] 与 google 网络通信正常!"						
    fi

# 将ping -c 2  ping 两次; -i 每次间隔; -w 总共等待时间;  vpn 连接上后需要等待一些时间
# $? 是上一个程序执行是否成功的标志,如果执行成功则$? 为0,否则 不为0
# 运行到此情况(网络异常ping不通);就全局退出脚本 [ˈɛgzɪt] exit 出口
# 正常情况不仅仅打印一句话,然后继续往下执行
}

main()
{
    download_deb
    for((;;))
    do 
        connect ; sleep 3
        ((i++))
        echo "当前尝试次数 : $i 状态: $status"
        
        
    done

}
main




 0  已被阅读了159次  楼主 2024-02-15 17:02:41
回复列表

回复:openvpn_connect.sh 拨号上网

guest
登录之后更精彩~
Powered by HadSky 7.12.10
© 2015-2024 PuYueTian
您的IP:3.238.174.191,2024-04-20 19:03:32,Processed in 0.01738 second(s).
Powered by HadSky
小绿叶技术博客