tastypear

check_and_reboot.sh

Dec 26th, 2025
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.63 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # 目标主机
  4. TARGET="google.com"
  5. # 允许的最大失败次数
  6. MAX_FAILURES=20
  7. # 计数器初始化
  8. failure_count=0
  9.  
  10. echo "--- Ping Test Script Started ---"
  11. echo "Target: $TARGET"
  12. echo "Max allowed failures: $MAX_FAILURES"
  13.  
  14. # 循环进行ping操作
  15. while true; do
  16.     echo "--- $(date) --- Attempt $((failure_count + 1)): Pinging $TARGET..."
  17.  
  18.     # 执行ping命令:
  19.     # -c 1: 只发送一个ICMP请求
  20.     # -W 2: 等待响应的时间为2秒 (timeout)
  21.     # > /dev/null 2>&1: 隐藏标准输出和标准错误,我们只关心退出状态码
  22.     ping -c 1 -W 2 "$TARGET" > /dev/null 2>&1
  23.    
  24.     # 检查上一个命令的退出状态码 ($?)
  25.     if [ $? -eq 0 ]; then
  26.         # Ping 成功
  27.         echo "Ping successful. Resetting counter."
  28.         failure_count=0
  29.     else
  30.         # Ping 失败
  31.         echo "Ping failed."
  32.         failure_count=$((failure_count + 1))
  33.         echo "Current failure count: $failure_count"
  34.     fi
  35.  
  36.     # 检查是否达到最大失败次数
  37.     if [ "$failure_count" -ge "$MAX_FAILURES" ]; then
  38.         echo "!!! CRITICAL !!!"
  39.         echo "Maximum failure threshold ($MAX_FAILURES) reached for $TARGET."
  40.         echo "Initiating system reboot..."
  41.        
  42.         # 执行重启命令 (使用 shutdown -r now 更安全,因为它会先通知系统)
  43.         # 如果需要立即重启,可以使用 'reboot' 或 'shutdown -r now'
  44.         /sbin/shutdown -r now
  45.        
  46.         # 脚本在这里应该停止执行,因为系统正在重启
  47.         exit 0
  48.     fi
  49.  
  50.     # 等待一段时间再进行下一次测试 (例如,每10秒测试一次)
  51.     sleep 10
  52. done
  53.  
Advertisement
Add Comment
Please, Sign In to add comment