LS-WVL 使用NUT (Network UPS Tools)監控UPS 運行環境 LS-WVL刷Debian 12 安裝套件 apt install -y nut 設定 編輯 /etc/nut/nut.conf  ,修改MODE=netclient,確認權限為root nut none: Nut 未設定 standalone: 獨立模式, 一般在只有一個 UPS 且只負責本地系統(不提供網路服務)的情況下使用. netserver:  Nut Server. netclient: 客戶端模式, 只啟動 nut-monitor, 用於連接遠端的 Nut 服務. root@LS-WVL885:~# cat /etc/nut/nut.conf ... MODE=netclient 編輯 /etc/nut/upsmon.conf ,以下範例為當UPS切換到電池後執行upssched調度程序,,確認權限為root nut #監控的UPS IP 使用者及密碼,模式為slave MONITOR ups@192.168.1.1 1 monuser secret slave #系統最少需要多少台 UPS ,通常單一 UPS 系統設1 MINSUPPLIES 1 #偵測到要關機(如 UPS 電池低、FSD)時,upsmon 執行的指令 SHUTDOWNCMD "/sbin/shutdown -h +0" #每幾秒輪詢 UPS 狀態 POLLFREQ 5 #在告警(例如 ONBATT)時,每幾秒檢查一次 POLLFREQALERT 5 HOSTSYNC 15 #若 15 秒都收不到 UPS 更新資料,就認為 UPS 通訊掛掉 DEADTIME 15 #當系統真的要「切電源」時,會建立這個旗標檔,UPS daemon 看到它後會通知 UPS 關閉輸出電源。 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 #若 300 秒都沒有收到 UPS 通訊,就發出「通訊中斷」通知 NOCOMMWARNTIME 300 #關機流程最後等待的秒數 FINALDELAY 5 #NUT自帶調度程序 NOTIFYCMD /sbin/upssched #UPS切換電池和恢復供電時皆觸發調度程序 NOTIFYFLAG ONBATT EXEC NOTIFYFLAG ONLINE EXEC #UPS無回應或恢復觸發調度程序 NOTIFYFLAG COMMOK EXEC NOTIFYFLAG NOCOMM EXEC upssched程序的設定檔為 /etc/nut/upssched.conf ,編輯並確認權限為root nut #自訂執行腳本位置 CMDSCRIPT /bin/upssched-cmd #確認以下路徑正確 PIPEFN /var/run/nut/upssched.pipe LOCKFN /var/run/nut/upssched.lock #當UPS狀態切換後執行參數 AT ONBATT * EXECUTE onbatt AT ONLINE * EXECUTE onpower AT NOCOMM * EXECUTE lost AT COMMOK * EXECUTE connect #當UPS切換電池後創建shutdown計時器120秒 AT ONBATT * START-TIMER shutdown 120 #當UPS恢復供電後取消計時器 AT ONLINE * CANCEL-TIMER shutdown 編輯 /bin/upssched-cmd ,確認權限為root nut和可執行 chmod +x , 當切換電池後記錄log並啟動shutdown計時器,120秒UPS未恢復供電則關機 #! /bin/sh case $1 in shutdown) echo "$(date): AC Power not restored after 120s, shutting down system." >> /var/log/ups-shutdown.log sleep 3 sudo /sbin/shutdown -h +0 ;; onbatt) echo "$(date): AC Power outage, on battery" >> /var/log/ups-shutdown.log ;; onpower) echo "$(date): AC Power restored" >> /var/log/ups-shutdown.log ;; connect) echo "$(date): Communications with UPS established" >> /var/log/ups-shutdown.log ;; lost) echo "$(date): Communications with UPS lost" >> /var/log/ups-shutdown.log ;; *) logger -t upssched-cmd "Unrecognized command: $1" ;; esac 使用 visudo ,加入nut使用者允許使用shutdown指令  root@LS-WVL885:~# visudo ... nut ALL=(ALL) NOPASSWD: /sbin/shutdown 建立nut程序可寫入log檔 touch /var/log/ups-shutdown.log chown root:nut /var/log/ups-shutdown.log chmod 664 /var/log/ups-shutdown.log systemctl enable nut-monitor systemctl start nut-monitor 測試 測試可讀取UPS狀態 root@LS-WVL885:~# upsc ups@192.168.1.1 Init SSL without certificate database battery.charge: 96 battery.charge.low: 10 battery.charge.warning: 50 battery.date: 2001/09/25 battery.mfr.date: 2023/08/10 battery.runtime: 2636 ups.status: OL CHRG ups.test.result: No test initiated ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d 測試UPS切換電池,120秒內未恢復供電則會關機和紀錄log root@LS-WVL885:~# cat /var/log/ups-shutdown.log Mon Sep 1 01:11:06 AM CST 2025: AC not restored after 120s, shutting down system. Mon Oct 20 01:14:56 AM CST 2025: AC Power outage, on battery Mon Oct 20 01:15:11 AM CST 2025: AC Power restored UPS無回應和恢復時紀錄log root@test:~# cat /var/log/ups-shutdown.log Sun Nov 16 04:52:15 PM CST 2025: Communications with UPS lost Sun Nov 16 04:52:25 PM CST 2025: Communications with UPS established