ネットワーク UPS ツール クライアントから macOS / mac OSX をシャットダウンする方法 - NUT

ネットワーク UPS ツール クライアントから macOS / mac OSX をシャットダウンする方法 - NUT

UPS から実行中に停電を検出したときに iMac をシャットダウンする方法を探しています。

私のセットアップは、APC SMT750i UPS で、2 台の Synology NAS と iMac、およびネットワーク キット (ルーター、スイッチなど) に電力を供給しています。これですべて問題ありません。Synology は Linux と NUT のバリアントを実行しています。私は MacPorts を使用して iMac (High Sierra 10.13.6) に NUT (v 2.6.5) をインストールしました。1 台の NAS は USB 経由で UPS に直接接続され、NUT ネットワークの「マスター」として機能し、もう 1 台の NAS と iMac は「スレーブ」です。

停電時には、マスターがUPSの状態を検出し、それをスレーブにブロードキャストします。スレーブは両方ともそれを正常に受信します。NASは両方とも、設定されたとおりに「セーフモード」に切り替わります。iMacは状態変更が正常に行われたことを受信し、ログインしているユーザーに繰り返し警告します。しかし実際にはシャットダウンしない私が望んでいる通り、そして私が設定した通りの動作をします。

私はオンラインで見つけられるアドバイスをすべて実行しました。特に次のアドバイスに従いました。

https://networkupstools.org/

MacOS の起動時に NUT クライアントを自動的に起動する方法

https://diktiosolutions.eu/en/synology/synology-ups-nut-en/

何が間違っているのでしょうか?

Mac NUT 設定ファイル:

設定ファイル

RUN_AS_USER root
MONITOR [email protected] 1 monuser ****** slave
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -u -h +1"
NOTIFYCMD /opt/local/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE   EXEC+SYSLOG+WALL
NOTIFYFLAG ONBATT   EXEC+SYSLOG+WALL
NOTIFYFLAG LOWBATT  EXEC+SYSLOG+WALL
NOTIFYFLAG FSD      EXEC+SYSLOG+WALL
NOTIFYFLAG COMMOK   EXEC+SYSLOG
NOTIFYFLAG COMMBAD  EXEC+SYSLOG
NOTIFYFLAG SHUTDOWN EXEC+SYSLOG+WALL
NOTIFYFLAG REPLBATT EXEC+SYSLOG+WALL
NOTIFYFLAG NOCOMM   EXEC+SYSLOG+WALL
NOTIFYFLAG NOPARENT EXEC+SYSLOG+WALL
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

/etc/upssched.conf

CMDSCRIPT /opt/local/bin/upssched-cmd
PIPEFN /opt/local/var/db/ups/upssched/upssched.pipe
LOCKFN /opt/local/var/db/ups/upssched/upssched.lock
AT ONBATT  [email protected] EXECUTE      on-battery
AT ONLINE  [email protected] EXECUTE      ups-back-on-line
AT COMMBAD [email protected] START-TIMER  upsgone 75
AT COMMOK  [email protected] CANCEL-TIMER upsgone

/bin/upssched-cmd

#! /bin/sh

case $1 in
    upsgone)
        logger -t upssched-cmd "Lost communication with UPS"
        /usr/bin/osascript -e 'tell app (path to frontmost application as text) to display dialog "Lost contact with UPS server" buttons {"OK"} default button 1 with icon note'
        ;;
    on-battery)
        logger -t upssched-cmd "UPS is running on battery"
        /usr/bin/osascript -e 'tell app "System Events"                         to display dialog "Power failure. Save your work" buttons {"OK"} default button 1'
        ;;
    ups-back-on-line)
        logger -t upssched-cmd "UPS is running on utility power"
        /usr/bin/osascript -e 'tell app (path to frontmost application as text) to display dialog "Power restored to UPS" giving up after 600 buttons {"OK"} default button 1 with icon note'
        ;;
    *)
        logger -t upssched-cmd "Unrecognized command: $1"
        /usr/bin/osascript -e "tell app (path to frontmost application as text) to display dialog \"upssched-cmd: unsupported command $1\" buttons {\"OK\"} default button 1 with icon caution"
        ;;
esac

答え1

この頭痛の種に対する私の解決策は、実際に私のセットアップで機能しました。

UPS1 - 以下のデバイスが接続されたサイバーパワー 800 ワット UPS

  • リスト項目 Synology ディスクステーション
  • リスト項目 8 スイッチ/ハブ
  • リスト項目ゲートウェイ

UPS2 - 以下のデバイスが接続されたサイバーパワー 300 ワット UPS

  • リスト項目 タイムマシン外付けハードドライブ
  • リスト項目 Mac Mini

これがそのアイデアです。

UPS1 は、UPS サポートを有効にするオプションを使用して Synology ディスクステーションに接続されます - 次に、ディスクステーションがセーフ モードに入るまでの時間をデフォルトで 5 分に設定し、UPS1 に接続されている 2 番目の UPS2 を Mac mini に接続し、UPS1 のバッテリーが消耗した場合に USP2 バッテリーが起動し、Mac mini がシャットダウンするように設定などのオプションを設定します。または、USP1 と UPS2 を独立したソケットにプラスして、そこから設定を指定することもできます。

関連情報