#!/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 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 15:20:43,Processed in 0.01265 second(s).