#!/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
Powered by ddoss.cn 12.0
©2015 - 2024 ddoss
渝公网安备50011302222260号 渝ICP备2024035333号 【实验平台安全承诺书】 小绿叶技术社区,优化网络中,点击查看配置信息
您的IP:192.168.122.82,2024-09-20 19:15:48,Processed in 0.03276 second(s).