最近软路由中的爱快或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