马春杰杰 Exit Reader Mode

群晖NAS根据路由器是否在线进行自动关机

之前买了一个UPS,结果不支持群晖NAS的断电关机,又不能退,只能想办法利用起来。

目前考虑的是通过ping路由器,如果ping不通了代表断电了,则进行关机操作。

脚本如下:

#!/bin/bash

# 设置要ping的路由器IP地址
ROUTER_IP="192.168.1.1"

# 设置ping的次数和超时时间
PING_COUNT=4
PING_TIMEOUT=5

# 日志文件路径
LOG_FILE="/var/log/power_check.log"

# 函数:执行ping命令
function check_connection {
    ping -c $PING_COUNT -W $PING_TIMEOUT $ROUTER_IP > /dev/null 2>&1
    return $?
}

# 第一次检测网络连接
check_connection

# 检查ping命令的返回值
if [ $? -ne 0 ]; then
  # 第一次失败,等待2分钟后重试
  sleep 120
  check_connection
  # 检查第二次ping命令的返回值
  if [ $? -ne 0 ]; then
    # 第二次还失败,记录日志并关机
    echo "$(date): 网络连接中断,系统即将关机..." | tee -a $LOG_FILE
    poweroff
  else
    echo "$(date): 第二次检测,网络连接恢复正常" | tee -a $LOG_FILE
  fi
else
  echo "$(date): 网络连接正常" | tee -a $LOG_FILE
fi

使用说明

打开控制面板任务计划新增计划的任务用户定义的脚本,在常规选项卡,把用户改为root

计划选项卡这里,修改运行时间

任务设置这里,把上面的脚本放上去就行了~