群晖NAS电源检查脚本教程
教程 45

在群晖NAS上,我们可以通过定时运行脚本来检查指定IP地址的连通性,以判断电源状态是否正常。如果电源状态异常,脚本会记录日志并执行关机操作。以下是一个完整的教程,帮助你在群晖NAS上设置和运行这个脚本。

1. 准备工作

1.1 创建脚本文件

  1. 创建脚本文件

    • 在群晖NAS上,创建一个目录来存放脚本文件。例如:
      mkdir -p /volume1/docker/powercheck
      
    • 创建脚本文件 power_check.sh
      touch /volume1/docker/powercheck/power_check.sh
      
  2. 编辑脚本文件

    • 使用你喜欢的编辑器(如 nanovi)编辑脚本文件:
      nano /volume1/docker/powercheck/power_check.sh
      
  3. 脚本内容

    • 将以下内容复制到脚本文件中:
      
      
    • #!/bin/sh MonitorIP=192.168.40.19 DelayTime=90s LogPath="/volume1/docker/powercheck/powerlog" CounterFile="/volume1/docker/powercheck/powercheck_count" MaxCount=10000

      #确保日志文件和计数器文件存在
      if [ ! -f "LogPath" ]; then touch "LogPath"
      fi

      if [ ! -f "CounterFile" ]; then echo 0 > "CounterFile"
      fi

      #读取当前计数
      CurrentCount=(cat "CounterFile")

      #使用ping命令检查IP地址
      if ping -c 2 -W 2 MonitorIP > /dev/null then #增加计数 NewCount=((CurrentCount + 1))
      echo NewCount > "CounterFile"

      #如果计数小于MaxCount,记录日志
      if [ $NewCount -le $MaxCount ]; then
          echo "$(date -d today +"%Y%m%d %H:%M:%S")-电源检查正常。" | tee -a "$LogPath"
      fi
      

      else
      #重置计数
      echo 0 > "CounterFile" echo "(date -d today +"%Y%m%d %H:%M:%S")-需要再次检查电源状态。" | tee -a "LogPath" sleep DelayTime

      if ping -c 2 -W 2 $MonitorIP > /dev/null
      then
          echo "$(date -d today +"%Y%m%d %H:%M:%S")-重新检查电源状态正常。" | tee -a "$LogPath"
      else
          echo "$(date -d today +"%Y%m%d %H:%M:%S")-再次检查后,电源丢失,准备关机。" | tee -a "$LogPath"
          poweroff
      fi
      

      fi

      exit 0

1.2 设置脚本权限

  1. 设置脚本文件的可执行权限
    chmod +x /volume1/docker/powercheck/power_check.sh
    

2. 测试脚本

2.1 手动运行脚本

  1. 运行脚本

    • 确保脚本文件具有可执行权限:
      chmod +x /volume1/docker/powercheck/power_check.sh
      
    • 运行脚本:
      /volume1/docker/powercheck/power_check.sh
      
  2. 检查日志

    • 检查日志文件 /volume1/docker/powercheck/powerlog,确认脚本是否按预期记录日志:
      cat /volume1/docker/powercheck/powerlog
      

2.2 验证日志内容

  • 如果脚本运行正常,日志文件中应该包含类似以下内容:
    20250603 10:49:28-电源检查正常。
    
  • 如果第一次检查失败,日志会记录:
    20250603 10:49:28-需要再次检查电源状态。
    
  • 如果第二次检查成功,日志会记录:
    20250603 10:50:58-重新检查电源状态正常。
    
  • 如果第二次检查失败,日志会记录:
    20250603 10:50:58-再次检查后,电源丢失,准备关机。
    

3. 设置定时任务

3.1 登录群晖管理界面

  1. 登录群晖管理界面
    • 打开浏览器,输入群晖NAS的IP地址,登录到群晖的管理界面。

3.2 进入任务计划程序

  1. 进入任务计划程序
    • 在管理界面的左侧菜单中,找到并点击**“控制面板”**。
    • 在控制面板中,找到并点击**“任务计划程序”**。

3.3 创建新任务

  1. 创建新任务

    • 在任务计划程序页面,点击**“创建”按钮,选择“计划任务”,然后选择“用户定义的脚本”**。
  2. 设置任务名称和描述

    • 在弹出的窗口中,输入任务的名称和描述,例如:
      • 任务名称Power Check
      • 描述定时检查电源状态并记录日志
  3. 设置用户权限

    • 选择一个具有管理员权限的用户账户,例如admin
  4. 设置脚本路径

    • 在**“脚本”部分,点击“浏览”**按钮,选择你的脚本文件(例如/volume1/docker/powercheck/power_check.sh)。
    • 或者,直接在**“要运行的命令”**框中输入脚本的完整路径:
      /volume1/docker/powercheck/power_check.sh
      
  5. 设置任务触发条件

    • 在**“计划”**部分,设置任务的触发条件。例如,如果你想每天凌晨2点运行脚本,可以设置如下:
      • 重复周期:每天
      • 开始时间:02:00
      • 每天重复:每5分钟
  6. 保存任务

    • 点击**“确定”**按钮,保存任务设置。

4. 验证任务是否成功创建

4.1 检查任务计划程序

  1. 检查任务计划程序
    • 在任务计划程序页面,你会看到刚刚创建的任务。点击任务名称,可以查看任务的详细信息和运行日志。

4.2 手动运行任务

  1. 手动运行任务
    • 为了确保任务能够正常运行,可以手动运行一次任务:
      • 在任务计划程序页面,找到你创建的任务,点击**“运行”**按钮。
    • 检查日志文件 /volume1/docker/powercheck/powerlog,确认脚本是否按预期执行。

5. 常见问题及解决方法

5.1 权限问题

  • 如果运行脚本时出现 Permission denied 错误,确保脚本文件具有可执行权限:
    sudo chmod +x /volume1/docker/powercheck/power_check.sh
    
  • 如果仍然出现权限问题,确保当前用户具有足够的权限来运行脚本。

5.2 ping 命令权限问题

  • 如果运行 ping 命令时出现 ping: socket: Operation not permitted 错误,确保当前用户具有足够的权限来运行 ping 命令:
    sudo visudo
    
    • sudoers 文件中,添加以下行:
      admin ALL=(ALL) NOPASSWD: /bin/ping, /sbin/poweroff
      

5.3 日志文件路径问题

  • 确保日志文件路径 /volume1/docker/powercheck/ 存在,并且具有写入权限:
    mkdir -p /volume1/docker/powercheck
    chmod 755 /volume1/docker/powercheck
    chmod 644 /volume1/docker/powercheck/powerlog
    chmod 644 /volume1/docker/powercheck/powercheck_count
    

6. 总结

  • 通过以上步骤,你可以在群晖NAS上定时运行脚本,检查电源状态并记录日志。如果遇到问题,可以参考常见问题及解决方法部分。希望这个教程对你有所帮助!
  • 如果你有任何问题或建议,请随时在评论区留言。

7. 补充

  • 当成功关机后,可以配合群晖的​“计划任务”​模拟自动开机: ​登录DSM​ → ​控制面板​ → ​硬件和电源​ → ​计划开机。 ​勾选“启用计划开机”​,并设置: 例如:每天 00:00 开机(如果此时有电,就会启动)。
群晖NAS电源检查脚本教程
https://monuo.fun/archives/wei-ming-ming-wen-zhang
作者
晓龙
发布于
更新于
许可