1. 程式人生 > 其它 >黑群暉折騰記(二)-為不支援通訊的UPS 增加斷電自動關 NAS

黑群暉折騰記(二)-為不支援通訊的UPS 增加斷電自動關 NAS

申明:
此方法整理自網路,並非原創,請參考[1]、[2]

如果你的 UPS 不支援通訊功能,在斷電後如何自動關機呢?此時可以建立如下指令碼,定時向另一臺網路裝置傳送 ping 命令,同時將該網路裝置直接接到市電,在市電斷電後,該裝置關機,NAS 收不到反饋,延遲一定時間後啟動關機過程。網路裝置可以是你的路由器,如果路由器需要接到 UPS,也可以是另一臺不再使用的網路裝置如廢棄的電視盒等,要保證該裝置長期由市電直接供電,否則將導致 NAS 關機。

root下載入指令碼

首先建立如下指令碼,命名為 powermon.sh:
#!/bin/sh

MonitorIP=192.168.1.203
DelayTime=60s

if ping $MonitorIP -W 2 -w 2 -c 2 | grep '^[0-9].*ms$' > /dev/null
then
echo "Power on."
else
synologset1 sys warn 0x11600036
sleep $DelayTime
if ping $MonitorIP -W 2 -w 2 -c 2 | grep '[0-9].*ms$' > /dev/null
then
synologset1 sys warn 0x11600035
else
synologset1 sys warn 0x11600037
poweroff
fi
fi

exit 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
上面指令碼中的 192.168.1.203 為你的路由器或其它長期由市電直接供電的網路裝置的 IP 地址,60s 為延遲時間,表示一旦檢測到斷電,將等待 60 秒,然後關機,如果 60 秒內恢復了供電,將不再關機。所以該值需根據你的 UPS 能支撐的時間來決定。

將上述指令碼儲存到 NAS 的合適位置,如 /usr/syno/sbin 下,為其新增執行許可權:
chmod +x /usr/syno/sbin/powermon.sh
1
在 NAS 管理介面,開啟“控制面板”,選擇“任務計劃”,點選“新增”並選擇“使用者定義的指令碼”,指定該指令碼,並選擇每天的 00:00 到 23:59,每 1 分鐘執行一次,可以根據你的 UPS 可堅持的時間修改,比如 5 分鐘, 10 分鐘等。

也可以不建立任務計劃,而是編輯 /etc/crontab 檔案,在最後插入一行:
* * * * * root /usr/syno/sbin/powermon.sh
1
各個區段用 TAB 分隔。這個也是每分鐘執行一次,可以根據你的 UPS 可堅持的時間修改,比如 5 分鐘, 10 分鐘等。

假如你的 ups 可堅持 15 分鐘,假如關機過程需要 2分鐘,這樣你的執行頻度可以設為 5 分鐘一次,延遲時間也可設 5分鐘一次。這樣斷掉後,最遲 12 分鐘完成關機。

如果不方便載入指令碼,也可以在DSM介面中操作,這種方法比較直觀。

控制面板→任務計劃→新增→計劃的任務–使用者定義的指令碼


計劃一項說說,每天執行,0:00開始,我設5分鐘一次,結束23:55


任務設定→自定義指令碼那裡複製程式碼進去,192.168.1.1是路由地址,不一樣自己改正,240s是延時240秒,我是五分鐘,如果一分鐘,改59s之類,如此類推。。。

填完→確定
回到-計劃的任務-點下剛健那個任務,再點執行一下,以後就是24小時運行了

至此完畢,不過應該有個缺點就是硬碟不能休眠,因為硬碟休眠那裡最短設10分鐘,五分鐘一次,那系統估計停不下來,至於那些用APC BK650-CH的人,在休眠下能否及時響應就不清楚了,哪個方法好用見仁見智。

關機後又恢復供電如何操一般可在 BIOS 中設定,可以保持關機狀態,也可以自動開機。
————————————————
版權宣告:本文為CSDN博主「sachin_woo」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/sachin_woo/article/details/100076789