PVE里面的ikuai容易宕机,让PVE每隔10分钟检查一下网络状态。如果有故障先重启Ikuai,等待5分钟测试,如果网络未恢复,继续重启PVE。
脚本如下:
!/bin/bash
#检测网络链接畅通
function network()
{
#超时时间
local timeout=5
#目标网站
local target=www.baidu.com
#获取响应状态码
local ret_code=curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1
if [ “x$ret_code” = “x200” ]; then
#网络畅通
return 1
else
#网络不畅通
return 0
fi
return 0
}
#第1次检测
network
first_check=$?
#睡眠60秒
sleep 60
#第2次检测
network
second_check=$?
if [[ $first_check -eq 0 && $second_check -eq 0 ]];then
echo date +"%Y-%m-%d %H:%M:%S"
无法连接互联网,准备重启OP! >> /var/log/test.log
#执行重启命令
qm reboot 100
#睡眠300秒
sleep 300
#第3次检测
network
third_check=$?
if [[ $third_check -eq 0 && $second_check -eq 0 ]];then
echo date +"%Y-%m-%d %H:%M:%S"
无法连接互联网,准备重启PVE! >> /var/log/test.log
#执行重启命令
shutdown -r now
exit -1
fi
fi
echo date +"%Y-%m-%d %H:%M:%S"
网络正常 >> /var/log/test.log
exit 0
你可以将这个脚本添加到crontab
中,以便定期运行,检查虚拟机的状态。例如,每10分钟运行一次:
运行
crontab -e
然后添加以下行:
*/10 * * * * /path/to/your/script.sh