网络检测脚本,ping 百度,连续失败 10 次,自动重启系统

脚本内容:vi /usr/local/bin/check_ping.sh

#!/bin/bash

# 定义时间格式函数,输出yyyy-MM-dd HH:mm:ss
get_time() {
    date +"%Y-%m-%d %H:%M:%S"
}

# 记录开始检测日志
echo "$(get_time): 即将连 ping 10 次 baidu.com,如果全部失败,则重启操作系统" >> /var/log/check_ping.log

# 连续ping百度10次,记录失败次数
FAIL_COUNT=0
for ((i=1; i<=10; i++)); do
    # 执行ping命令,只尝试1次,超时1秒
    ping -c 1 -W 1 baidu.com > /dev/null 2>&1
    if [ $? -ne 0 ]; then
        FAIL_COUNT=$((FAIL_COUNT + 1))
    fi
    # 每次ping之间间隔1秒
    sleep 1
done

# 如果10次都失败则重启
if [ $FAIL_COUNT -eq 10 ]; then
    # 记录重启原因到日志
    echo "$(get_time): 连续10次ping百度失败,将执行重启" >> /var/log/check_ping.log
    # 重启系统
    reboot
else
    echo "$(get_time): 网络正常,本轮共失败 $FAIL_COUNT 次" >> /var/log/check_ping.log
fi

 

添加定时任务:

crontab -e

*/10 * * * * sh /usr/local/bin/check_ping.sh

 

等待任务执行即可

posted @ 2025-08-26 16:43  Nihaorz  阅读(16)  评论(0)    收藏  举报