最近软路由中的爱快或openwrt偶尔有崩溃情况,导致网络中断,需要手动恢复。为了之后遇到类似问题PVE可以一定程度上自修复,我编写了如下脚本,用于监控PVE的网络连通性,如果网络不通则硬重启某个/些虚拟机。
将一下代码上传至PVE环境,并添加至cron自动执行即可。
#! /bin/bash
server1="www.baidu.com"
# server1="1.1.2.2" # 模拟ping不通的测试地址
log=internet.log
# 判断输出日志文件是否存在,如果否则创建
if [ ! -f $log ]
then
touch $log
fi
# 判断日志是否达到最大行数,如果是则清空
linecount=`wc -l $log | awk '{print $1}'`
if [ $linecount -ge 1000 ]
then
echo "" > $log
fi
clear
while true
do
ping -c 4 -W 5 $server1
if [ $? != 0 ]
then
echo "--------------------------------------" >> $log
echo "`date '+%Y-%m-%d %H:%M:%S'` | 网络异常" >> $log
echo "Unable to connect to the network" >> $log
sleep 3
echo "`date '+%Y-%m-%d %H:%M:%S'` | 重启 VM 100 - iKuai" >> $log
echo "Rebooting VM 100 - iKuai" >> $log
# VM 100 iKuai
qm reset 100
sleep 10
echo "`date '+%Y-%m-%d %H:%M:%S'` | 重启 VM 101 - OpenWrt" >> $log
echo "Rebooting VM 101 - OpenWrt" >> $log
# VM 101 OpenWrt
qm reset 101
sleep 10
break
else
echo "--------------------------------------" >> $log
echo "`date '+%Y-%m-%d %H:%M:%S'` | 网络正常" >> $log
echo "Connection looks fine" >> $log
break
fi
done