PVE / 系统 · 2024年 3月 18日 0

pve自动重启脚本/PVE 虚拟机心跳检测并重启

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