家中群晖NAS遇到断电如何自动关机

群晖NAS遇到断电时如何自动关机

  • 前置条件
  • 实现功能的想法
  • 具体实施的步骤
    • 开启群晖Linux的SSH登陆
    • 安装Putty或是Xshell远程登陆上群晖
    • 创建计划任务

前置条件

需要一台UPS(品牌功能不限,只需续航5分钟以上就可以)

实现功能的想法

通过监控网卡的状态来达到目的。 网卡连接的网关并没有UPS保护,因为断电时,网卡会出现离线的状态,当监控到网卡的离线状态时,发出关机命令既可实现安全保护目的。

具体实施的步骤

开启群晖Linux的SSH登陆

登陆群晖管理后台
家中群晖NAS遇到断电如何自动关机_第1张图片
家中群晖NAS遇到断电如何自动关机_第2张图片

安装Putty或是Xshell远程登陆上群晖

我这里用的是sa账户登陆的,把脚本文件也放到了sa根目录下。
检测群晖NAS的网卡状态,我的NAS有四个千兆口,查询

root@DataStore:~# ls /sys/class/net/
docker0  docker7cb2ffc  dockerf1962b8  dockerf6d9158  eth0  eth1  eth2  eth3  lo  sit0
root@DataStore:~# 

这里有eth0~eth3四个网卡
查询网卡的状态

root@DataStore:~# cat /sys/class/net/eth0/operstate
down
root@DataStore:~# cat /sys/class/net/eth1/operstate
up
root@DataStore:~# 

up在线,down离线,这样就很容易判断了
创建脚本命令:

vim upscheck.sh
  1 #!/bin/bash                                                                                                                                 
  2 
  3 #statusFile=~sa/.electricity.status;
  4 
  5 # 判断文件是否存在。如果不存在就创建默认文件
  6 #if [ ! -f "$statusFile" ]; then
  7 #   echo "file is not exists! I will create!";
  8 #   $(echo "off-line" > $statusFile);
  9 #fi
 10 
 11 # 读取上一次检测的结果
 12 #status=$(cat $statusFile);
 13 logFile=~sa/poweroff.log;
 14 
 15 eth0=$(cat /sys/class/net/eth0/operstate);
 16 eth1=$(cat /sys/class/net/eth1/operstate);
 17 eth2=$(cat /sys/class/net/eth2/operstate);
 18 eth3=$(cat /sys/class/net/eth3/operstate);
 19 
 20 # 判断4张网卡是不是都是离线的状态,如果离线了,说明交换机没电了,就要关机了
 21 if [[ "$eth0" == 'up' || "$eth1" == 'up' || "$eth2" == 'up' || "$eth3" == 'up' ]]; then
 22     # 网卡有在线,交换机有电,则记录在线状态到文件
 23     #$(echo "on-line" > $statusFile);
 24     echo "Power supply is normal, system is normal.";
 25 else
 26     #$(echo "off-line" > $statusFile);
 27 
 28     # 所有的网卡都离线了,马上关机
 29     log="Network offline power supply abnormal, system shutdown now!";
 30     echo "[`date`]$log" >> $logFile;
 31     $(shutdown -h now);
 32 fi

创建计划任务

家中群晖NAS遇到断电如何自动关机_第3张图片家中群晖NAS遇到断电如何自动关机_第4张图片
家中群晖NAS遇到断电如何自动关机_第5张图片
家中群晖NAS遇到断电如何自动关机_第6张图片

你可能感兴趣的:(小技巧,linux)