让电脑和NAS断网后自动关机

最近搬家了,不妙的事情是最近好像附近特别爱断电,供电环境有点恶劣。而我的台式机都是定时开机,而且即使不动,也经常是锁屏而已。所以,电脑很受伤。而NAS更是常年开着机,硬盘上面存放着大量的数据。所以,在供电环境恶劣的情况下,我不得不买了一台UPS。

NAS断网关机

买UPS的时候没有注意到UPS的牌子以及型号,UPS是买回来了,不过群晖的操作系统“并不支持”。之所以说不支持,只是不能支持群晖NAS自带的不断电系统,才有了下面的变通。稍微对linux系统熟悉的人都知道群晖的DSM其实是一个Linux发行版。shell脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

IP="192.168.1.1"
NUM=1
while [ $NUM -le 5 ]; do
if ping -c 1 $IP > /dev/null; then
echo "$IP Ping is successful."
break
else
let NUM++
fi
done
if [ $NUM -ge 5 ];then
echo "Power Off"
poweroff
else
echo "Power On"
fi

其实很简单,简单解释一下。IP变量指定路由器IP,NUM是一个初始化变量。接下来进入一个循环,当NUM小于5的时候,PING一下路由器,如果PING通,输出一个提示,并跳出循环;如果无法PING通,则让NUM变量加1。循环完成后判断一下NUM的值是否大于或者等于5,如果是就输出提示并关机,否则只输出提示。建议在Linux上面保存上面的内存成shell脚本文件,名称是poweroff.sh。

  1. 把上面保存的脚本文件放到NAS上File Station的shell文件夹,如果没有shell文件夹,新建就好;
  2. 依次进入“控制面板》任务计划”;
  3. 在右侧顶部,依次点击“新增》计划的任务》用户定义的脚本”;
  4. 在创建任务窗口上面点击“计划”tab,在日期设置项里面选择“在以下天中运行”,并且设置下面的下拉框值成“每天”;然后在时间设置项里面首次运行时间设置成“00:00”,把最后运行时间设置成“23:59”,把运行频率修改成“每5分钟”;
  5. 点击“任务设置”tab,在运行命令下面的子设置项的文本框输入”bash /volume1/shell/poweroff.sh”(不含引号);
  6. 点击窗口下面的“确定”保存设置即可;

windows断网关机

windows关机依赖于windows的事件机制。不需要写什么脚本,按以下步骤操作即可!

  1. 首先需要确定电脑连接网络网卡、路由器不经常变更,一句话,不经常变更网络设备以及环境;
  2. 找出事件ID,依次点击“控制面板》系统和安全》管理工具》事件查看器”,打开事件查看器;
  3. 在左边的事件查看器(本地)下面依次展开“应用程序和服务日志》Microsoft》Windows》NetworkProfile》Operational”;
  4. 在右边的顶部,依次点击不同事件ID的信息查看说明(同一个事件ID的多个信息点击其中一个即可),直到找到详情里面的常规tab里面的状态是“已断开连接”的时候停下来,记住事件ID;
  5. 依次点击“控制面板》系统和安全》管理工具》任务计划程序”,启动任务计划程序;
  6. 点击顶部的“操作》创建任务”,打开创建任务窗口;
  7. 在常规tab里面输入一个名称,描述随便写,选择“不管用户是否登录都要运行(W)”,并选择“使用最高权限运行(I)”;
  8. 在触发器tab里面点击新建按钮,在开始任务(G)那里选择“发生事件时”,在设置区域里面选择“基本”,在日志(O)那里选择“Microsoft-Windows-NetworkProfile/Operational”,在源(S)那里选择“NetworkProfile”,在事件ID(T)那里输入上面第2、3、4步获取到的事件ID,点击“确定”即可;
  9. 在操作tab里面点击新建打开编辑操作对话框,在操作(I)那里选择“启动程序”,在程序或脚本(P)那里输入“C:\Windows\System32\shutdown.exe”,在添加参数(可选)(A)那里输入“-f
    -s -t 60 /c “网络异常,可能是因为市电故障。系统即将于1分钟后关闭””,点击确定保存;
  10. 点击创建任务窗口上面的确定保存即可!

注意,UPS不能给路由器供电,这样子市电断了之后,路由器会断电,windows系统的断网事件会被触发并通知系统执行程序,从而达到断网关机的目的!