●apcupsdのインストール(RPM)
apcupsd とはAPC社製の無停電装置を監視し、ブラウザから状態を表示してくれる便利なツールです。ツールはCGIを使用しています。
●apcupsdのインストール(ソース)
CentOS5.xではRPMからインストールしてもCGIパッケージがインストールされないのでソースからインストールすることにします。
また、CGIをインストールするにはgd、gd-develが必要ですのであらかじめインストールしておいてください。
●設定
/etc/apcupsd/apcupsd.confを編集します。
●master側のapcupsd.conf
●slave側のapcupsd.conf
●Windowsのslave側のapcupsd.conf
参考URL:Apcupsd を使用して LAN 上の複数のサーバを自動シャットダウンする
winapcupsd-3.14.14.exeをApcupsd UPS control softwareよりダウンロードします。
ダウンロードしたファイルをダブルクリックしインストールを開始します。
必要に応じて、Windowsファイアーウォールの設定を変更し通信ができるようにします。
●APCUPSDの動作テスト
apctestコマンド・apcaccessコマンド
動作テストをしてみよう。テストには次の2つの方法があります。
* apctestコマンドを使う方法
* apcaccessコマンドを使う方法
apctestコマンドは、どちらかというと正しく動作しない場合にその原因を調べるためのもので、ケーブルを抜いて試したりするための原因究明が主目的となっています。
apcaccessコマンドは、apcupsdに現在のUPSの状態を問い合わせ、現在の状態を調べるためのものです。
apctestを実行してみます。この場合、事前にapcupsdを停止しておく必要がありますので注意してください。
停電模擬試験
実際には停電を起こすことは出来ませんので、UPSのコンセントを抜き、警告メッセージが出力されればOKです。
※ この情報は即座に root へもメールされます。
復電模擬試験
サーバーがシャットダウンされる前にUPSのコンセントを戻します。電力が回復した旨のメッセージが出力されればOKです。
●CGIの動作確認
apcupsd-cgiをインストールしたマシンでの作業となります。
ただし、既にWebサーバの設定及びPerlのインストール等は完了しているものとします。
以下のような画面が表示されます。
ただし、ソースからインストールした場合は上記にアクセスしても表示されませんので、準備をします。
上記、画面内の「localhost」をクリックすると、以下のような画面が表示されます。
ブラウザでのアクセスはデフォルトのアクセス制御によりlocalhostからしか参照できません。必要に応じて、アクセス制御を追記してください。
●同じUPSから電源供給されている他PCとの連携
#はコメントアウトされていることを示します。
●APCUPSD UPS Network Monitorで複数監視
apcupsd-cgiをインストールしたマシンでの作業となります。
hosts.confを編集します
●携帯電話へ通知(.pcocmailrcを使用)
apcupsdを設定すると、停電・復電時にroot宛にメールが届きます。
root宛に届いたメールを/etc/aliasesを使用して特定ユーザに自動転送するように設定します。
特定ユーザ宛に届いたUPSに関するメールを携帯電話のメールアドレスに転送するように設定します。
しかし、/etc/aliasesで指定すると、すべてのroot宛のメールが特定ユーザに転送されてしまいます。
転送されたメールから停電・復電時に関連するメールのみを更に、携帯電話に転送するように設定しました(procmailがインストールされていることが必要です)。
まず、rootになり、ローカル上のあるユーザに転送するようにします。保存したら、newaliasesを忘れずに実行します。
停電テストを実施し、その結果が無事転送され、転送先ユーザで受信できていれば設定完了です。
その他にも細かく設定できます。詳しくは/usr/share/doc/apcupsd-3.8.5/にドキュメントがあります。
●停電時のメール通知
停電発生時にメールで通知させます。
・sendmailコマンドによる方法
・mailコマンドによる方法
●復電時のメール通知
復電時にメールで通知するようにする。
・sendmailコマンドによる方法
・mailコマンドによる方法
apcupsd とはAPC社製の無停電装置を監視し、ブラウザから状態を表示してくれる便利なツールです。ツールはCGIを使用しています。
# yum -y install apcupsd apcupsd-cgi apcupsd-gui # systemctl enable apcupsd # cp /var/www/apcupsd/*cgi /var/www/cgi-bin/ # systemctl start httpd(またはrestart) ※CentOS 8の場合 # dnf install libusb mailx -y # rpm -ivh http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-3.14.14-18.el8.x86_64.rpm \ http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-cgi-3.14.14-18.el8.x86_64.rpm \ http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-gui-3.14.14-18.el8.x86_64.rpm http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-3.14.14-18.el8.x86_64.rpm を取得中 http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-cgi-3.14.14-18.el8.x86_64.rpm を取得中 http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/a/apcupsd-gui-3.14.14-18.el8.x86_64.rpm を取得中 Verifying... ################################# [100%] 準備しています... ################################# [100%] 更新中 / インストール中... 1:apcupsd-3.14.14-18.el8 ################################# [ 33%] 2:apcupsd-cgi-3.14.14-18.el8 ################################# [ 67%] 3:apcupsd-gui-3.14.14-18.el8 ################################# [100%] # systemctl enable --now apcupsd # firewall-cmd --add-service=apcupsd --permanent # firewall-cmd --reload
●apcupsdのインストール(ソース)
CentOS5.xではRPMからインストールしてもCGIパッケージがインストールされないのでソースからインストールすることにします。
また、CGIをインストールするにはgd、gd-develが必要ですのであらかじめインストールしておいてください。
# cd /usr/local/src # wget http://sourceforge.net/projects/ \ apcupsd/files/apcupsd%20-%20Stable/3.14.8/apcupsd-3.14.8.tar.gz/download # tar zxvf apcupsd-3.14.8.tar.gz # cd apcupsd-3.14.8 # ./configure -enable-cgi -with-cgi-bin=/var/www/apcupsd -enable-usb以下のように表示されれば問題ありません。
Configuration complete: Run 'make' to build apcuspd.# make 以下のように表示されれば問題ありません。
src src/lib CXX src/lib/apcconfig.c CXX src/lib/apcerror.c CXX src/lib/apcevents.c CXX src/lib/apcexec.c CXX src/lib/apcfile.c CXX src/lib/apclibnis.c CXX src/lib/apclock.c CXX src/lib/apclog.c CXX src/lib/apcsignal.c CXX src/lib/apcstatus.c CXX src/lib/asys.c CXX src/lib/newups.c CXX src/lib/md5.c CXX src/lib/statmgr.cpp CXX src/lib/gethostname.c CXX src/lib/amutex.cpp CXX src/lib/astring.cpp CXX src/lib/autil.cpp CXX src/lib/atimer.cpp CXX src/lib/athread.cpp AR src/lib/libapc.a src/drivers src/drivers/apcsmart CXX src/drivers/apcsmart/smart.c CXX src/drivers/apcsmart/smarteeprom.c CXX src/drivers/apcsmart/smartoper.c CXX src/drivers/apcsmart/smartsetup.c CXX src/drivers/apcsmart/smartsetup2.c src/drivers/dumb CXX src/drivers/dumb/dumboper.c CXX src/drivers/dumb/dumbsetup.c src/drivers/net CXX src/drivers/net/net.c src/drivers/pcnet CXX src/drivers/pcnet/pcnet.c src/drivers/usb src/drivers/usb/linux CXX src/drivers/usb/linux/linux-usb.c CXX src/drivers/usb/usb.c src/drivers/snmplite CXX src/drivers/snmplite/asn.cpp CXX src/drivers/snmplite/mib.cpp CXX src/drivers/snmplite/snmp.cpp CXX src/drivers/snmplite/snmplite.cpp CXX src/drivers/drivers.c AR src/drivers/libdrivers.a src/cgi CXX src/cgi/upsfetch.c CXX src/cgi/cgilib.c CXX src/cgi/multimon.c LD src/cgi/multimon.cgi CXX src/cgi/upsstats.c LD src/cgi/upsstats.cgi CXX src/cgi/upsfstats.c LD src/cgi/upsfstats.cgi CXX src/cgi/upsimage.c LD src/cgi/upsimage.cgi CXX src/options.c CXX src/device.c CXX src/reports.c CXX src/action.c CXX src/apcupsd.c CXX src/apcnis.c LD src/apcupsd CXX src/apcaccess.c LD src/apcaccess CXX src/apctest.c LD src/apctest CXX src/smtp.c LD src/smtp platforms platforms/etc platforms/redhat docインストールします。
# make install以下のように表示されればインストール完了です。
src src/lib src/drivers src/drivers/apcsmart src/drivers/dumb src/drivers/net src/drivers/pcnet src/drivers/usb src/drivers/usb/linux src/drivers/snmplite src/cgi COPY multimon.cgi => /var/www/apcupsd COPY upsstats.cgi => /var/www/apcupsd COPY upsfstats.cgi => /var/www/apcupsd COPY upsimage.cgi => /var/www/apcupsd COPY apcupsd.css => /etc/apcupsd/apcupsd.css.new COPY hosts.conf => /etc/apcupsd/hosts.conf.new COPY multimon.conf => /etc/apcupsd/multimon.conf.new COPY apcupsd => /sbin/apcupsd COPY apctest => /sbin/apctest COPY apcaccess => /sbin/apcaccess COPY smtp => /sbin/smtp platforms platforms/etc COPY apcupsd.conf => /etc/apcupsd/apcupsd.conf COPY changeme => /etc/apcupsd/changeme COPY commfailure => /etc/apcupsd/commfailure COPY commok => /etc/apcupsd/commok COPY offbattery => /etc/apcupsd/offbattery COPY onbattery => /etc/apcupsd/onbattery platforms/redhat ------------------------------------------------------------ RedHat distribution installation ------------------------------------------------------------ COPY apcupsd => /etc/rc.d/init.d CP /etc/rc.d/init.d/halt => //etc/rc.d/init.d/halt.old AWK /etc/rc.d/init.d/halt ================================================= apcupsd script installation for RedHat complete. You should now edit /etc/apcupsd/apcupsd.conf to correspond to your setup then start the apcupsd daemon with: /etc/rc.d/init.d/apcupsd start thereafter when you reboot, it will be stopped and started automatically. Please check that your halt script in: /etc/rc.d/init.d/halt was properly updated (see installation section of manual) ================================================= COPY apccontrol => /etc/apcupsd/apccontrol COPY 80-apcupsd-ups-policy.fdi => /usr/share/hal/fdi/policy/20thirdparty doc COPY apcupsd.8 => /usr/share/man/man8/apcupsd.8 COPY apcaccess.8 => /usr/share/man/man8/apcaccess.8 COPY apctest.8 => /usr/share/man/man8/apctest.8 COPY apccontrol.8 => /usr/share/man/man8/apccontrol.8 COPY apcupsd.conf.5 => /usr/share/man/man5/apcupsd.conf.5
●設定
/etc/apcupsd/apcupsd.confを編集します。
# vi /etc/apcupsd/apcupsd.conf
設定 | 項目 | 説明 |
---|---|---|
物理設定 | UPSCABLE | 接続に用いるケーブルの種類 |
UPSTYPE | UPSの種類 | |
DEVICE | UPSを繋いだポート。USBの場合、自動認識するので設定する必要はない | |
シャットダウン設定 | シャットダウンの開始はBATTERYLEVELとMINUTES、TIMEOUTの3つの値の内どれか一つが該当したときに実行される | |
BATTERYLEVEL | バッテリ残量が指定したパーセンテージを下回った場合にシャットダウンする | |
TIMEOUT | バッテリに動作が切り替わってからシャットダウンする秒数 0ならシャットダウンしない | |
MINUTES | バッテリ稼働可能と思われる予想残り時間が指定の時間(分)を切った場合にシャットダウンする | |
UPS管理設定 | POLLTIME | UPSへの問合せ間隔(秒) |
ONBATTERYDELAY | 瞬間停電から実際の電源障害であるとonbatteryイベントで検知するまでの時間を指定 | |
ANNOY | ANNOYはシステムを停止する前にユーザに対してログオフを促す通知を行う時間を秒で指定。0を設定すると無効になる | |
ANNOYDELAY | 停電時にユーザへの通知を開始するまでの時間(遅延時間)を秒で指定 | |
NOLOGON | 停電中にユーザのログインを拒否するためのnologinファイルを作成する条件を設定 | |
NETSERVER | cgiを利用したUPSステータスプログラムを利用するか、しないか | |
NISPORT | NETSERVERで利用するポート番号 | |
EVENTFILE | イベントログの保管場所(起動・電源断・バッテリー交換など) | |
UPSNAME | ステータス表示に使うUPS名前 | |
ネットUPS設定 | UPSCLASS | sharemaster,shareslave,standalone などを設定 |
UPSMODE | 共有、net、等のモード | |
NETACCESS | ネットワークアクセスをさせるか | |
NETTIME | マスタ・スレーブ間でのデータ転送間隔(sec) | |
NETPORT | ネットワークで利用するTCPポート番号 | |
MASTER | マスターIPを設定(スレーブのみ設定) | |
SLAVE | スレーブIPを設定 複数可(マスターのみ設定) | |
USERMAGIC | スレーブ識別子。同一UPS内で重複不可 |
●master側のapcupsd.conf
UPSCABLE usb UPSTYPE usb DEVICE LOCKFILE /var/lock BATTERYLEVEL 10 ← 自己環境に合わせる MINUTES 5 ← 自己環境に合わせる TIMEOUT 300 ← 自己環境に合わせる ANNOY 300 ANNOYDELAY 60 NOLOGON disable KILLDELAY 0 NETSERVER on NISIP 0.0.0.0 NISPORT 3551 EVENTSFILE /var/log/apcupsd/apcupsd.events EVENTSFILEMAX 10 UPSCLASS standalone ← デフォルトのまま UPSMODE disable ← デフォルトのまま STATTIME 0 STATFILE /var/log/apcupsd/apcupsd.status LOGSTATS off DATATIME 0 #FACILITY local1設定が完了したらapcupsdを再起動します。
# systemctl restart apcupsd または # systemctl restart apcupsd
●slave側のapcupsd.conf
UPSCABLE ether ← 変更 UPSTYPE net ← 変更 DEVICE 192.168.0.5:3551 ← masterサーバのIP:ポート LOCKFILE /var/lock BATTERYLEVEL 15 ← 自己環境に合わせる MINUTES 5 ← 自己環境に合わせる TIMEOUT 300 ← 自己環境に合わせる ANNOY 300 ANNOYDELAY 60 NOLOGON disable KILLDELAY 0 NETSERVER on NISIP 0.0.0.0 NISPORT 3551 EVENTSFILE /var/log/apcupsd/apcupsd.events EVENTSFILEMAX 10 UPSCLASS standalone ← デフォルトのまま UPSMODE disable ← デフォルトのまま STATTIME 0 STATFILE /var/log/apcupsd/apcupsd.status LOGSTATS off DATATIME 0 #FACILITY local1設定が完了したらapcupsdを再起動します。
# systemctl restart apcupsd または # systemctl restart apcupsd
●Windowsのslave側のapcupsd.conf
参考URL:Apcupsd を使用して LAN 上の複数のサーバを自動シャットダウンする
winapcupsd-3.14.14.exeをApcupsd UPS control softwareよりダウンロードします。
ダウンロードしたファイルをダブルクリックしインストールを開始します。
UPSCABLE ether UPSTYPE net DEVICE 192.168.0.5:3551 ← masterサーバのIP:ポート LOCKFILE /var/lock BATTERYLEVEL 12 ← 自己環境に合わせる MINUTES 5 ← 自己環境に合わせる TIMEOUT 300 ← 自己環境に合わせる ANNOY 300 ANNOYDELAY 60 NOLOGON disable KILLDELAY 0 NETSERVER on NISIP 0.0.0.0 NISPORT 3551 EVENTSFILE c:\Program Files/apcupsd/etc/apcupsd/apcupsd.events EVENTSFILEMAX 10 UPSCLASS standalone ← デフォルトのまま UPSMODE disable ← デフォルトのまま STATTIME 0 STATFILE c:\Program Files/apcupsd/etc/apcupsd/apcupsd.events LOGSTATS off DATATIME 0 #FACILITY local1設定が完了したら、「Apcupsd UPS Monitor」サービスをを再起動します。
必要に応じて、Windowsファイアーウォールの設定を変更し通信ができるようにします。
●APCUPSDの動作テスト
apctestコマンド・apcaccessコマンド
動作テストをしてみよう。テストには次の2つの方法があります。
* apctestコマンドを使う方法
* apcaccessコマンドを使う方法
apctestコマンドは、どちらかというと正しく動作しない場合にその原因を調べるためのもので、ケーブルを抜いて試したりするための原因究明が主目的となっています。
apcaccessコマンドは、apcupsdに現在のUPSの状態を問い合わせ、現在の状態を調べるためのものです。
apctestを実行してみます。この場合、事前にapcupsdを停止しておく必要がありますので注意してください。
# systemctl start apcupsd # apctestUSBケーブルがうまくつながってなかったり何か問題があると、下記のように表示されます。
Tue Aug 04 14:03:52 JST 2009 apcupsd FATAL ERROR in linux-usb.c at line 609 Cannot find UPS device -- For a link to detailed USB trouble shooting information, please see <http://www.apcupsd.com/support.html>. Tue Aug 04 14:03:52 JST 2009 apcupsd error shutdown completed Tue Aug 04 14:16:55 JST 2009 apcupsd FATAL ERROR in linux-usb.c at line 609 Cannot find UPS device -- For a link to detailed USB trouble shooting information, please see <http://www.apcupsd.com/support.html>. Tue Aug 04 14:16:55 JST 2009 apcupsd error shutdown completed問題が無いと、下記のように表示されます。
2009-08-04 14:05:10 apctest 3.14.6 (16 May 2009) redhat Checking configuration ... Attached to driver: usb sharenet.type = DISABLE cable.type = USB_CABLE You are using a USB cable type, so I'm entering USB test mode mode.type = USB_UPS Setting up the port ... Hello, this is the apcupsd Cable Test program. This part of apctest is for testing USB UPSes. Getting UPS capabilities...SUCCESS Please select the function you want to perform. 1) Test kill UPS power 2) Perform self-test 3) Read last self-test result 4) Change battery date 5) View battery date 6) View manufacturing date 7) Set alarm behavior 8) Set sensitivity 9) Set low transfer voltage 10) Set high transfer voltage 11) Quit Select function number:問題が無ければ、apcupsdを起動します。
# systemctl start apcupsdログを確認します。
# cat /var/log/apcupsd.events
停電模擬試験
実際には停電を起こすことは出来ませんので、UPSのコンセントを抜き、警告メッセージが出力されればOKです。
※ この情報は即座に root へもメールされます。
Broadcast message from root (Thu Aug 6 23:31:48 2009): Power failure on UPS BK350JP. Running on batteries.
復電模擬試験
サーバーがシャットダウンされる前にUPSのコンセントを戻します。電力が回復した旨のメッセージが出力されればOKです。
Broadcast message from root (Thu Aug 6 23:31:53 2009): Power has returned on UPS BK350JP...
●CGIの動作確認
apcupsd-cgiをインストールしたマシンでの作業となります。
ただし、既にWebサーバの設定及びPerlのインストール等は完了しているものとします。
systemctl start apcupsd systemctl status apcupsd systemctl start httpdブラウザでhttp://localhost/apcupsd/multimon.cgiにアクセスします。
以下のような画面が表示されます。
ただし、ソースからインストールした場合は上記にアクセスしても表示されませんので、準備をします。
# vi /etc/httpd/conf.d/apcupsd.conf (下記はapache 2.2の設定例) ScriptAlias /apcupsd/ "/var/www/apcupsd/" <Directory "/var/www/apcupsd"> DirectoryIndex upsstats.cgi AllowOverride None Options ExecCGI Indexes Order deny,allow Deny from all Allow from 127.0.0.1 Allow from ::1 # Allow from .example.com </Directory> (下記はapache 2.4の設定例) <Directory "/var/www/apcupsd"> DirectoryIndex upsstats.cgi AllowOverride None Options ExecCGI Indexes <IfModule mod_authz_core.c> # Apache 2.4 Require local </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order deny,allow Deny from all Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> # systemctl restart httpdこれで少なくとも127.0.0.1からアクセスすることができるようになります。

上記、画面内の「localhost」をクリックすると、以下のような画面が表示されます。

ブラウザでのアクセスはデフォルトのアクセス制御によりlocalhostからしか参照できません。必要に応じて、アクセス制御を追記してください。
# vi /etc/httpd/conf.d/apcupsd.conf (下記はapache 2.2の設定例) <Directory "/var/www/apcupsd"> DirectoryIndex upsstats.cgi AllowOverride None Options ExecCGI Indexes Order deny,allow Deny from all Allow from 127.0.0.1 192.168.0 ← 192.168.0.0/24を許可 Allow from 10.0.0 ← 10.0.0.0/24を許可 Allow from ::1 # Allow from .example.com </Directory> (下記はapache 2.4の設定例) <Directory "/var/www/apcupsd"> DirectoryIndex upsstats.cgi AllowOverride None Options ExecCGI Indexes <IfModule mod_authz_core.c> # Apache 2.4 Require local Require ip 192.168.0. ← 192.168.0.0/24を許可 Require ip 10.0.0. ← 10.0.0.0/24を許可 </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order deny,allow Deny from all Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
●同じUPSから電源供給されている他PCとの連携
項目 | 初期値 | Master (Linux) |
Slave1 (Windows Server 2000) |
Slave2 (Windows 2003 Server) |
---|---|---|---|---|
UPSCABLE | usb | usb | ether | ether |
UPSTYPE | usb | usb | usb | usb |
DEVICE | 必要なし | 必要なし | 必要なし | 必要なし |
BATTERYLEVEL | 5 | 5 | 12 | 12 |
MINUTES | 3 | 3 | 5 | 5 |
TIMEOUT | 0 | 300 | 300 | 300 |
NETSERVER | on | on | on | on |
NISPORT | 3551 | 3551 | 3551 | 3551 |
EVENTFILE | 初期値 | 初期値 | 初期値 | 初期値 |
UPSNAME | - | 適宜指定 | 適宜指定 | 適宜指定 |
UPSCLASS | standalone | standalone | standalone | standalone |
UPSMODE | disable | disable | disable | disable |
NETACCESS | true | true | true | true |
NETTIME | #NETTIME 100 | NETTIME 100 | NETTIME 100 | NETTIME 100 |
NETPORT | #NETPORT 6666 | NETPORT 6666 | NETPORT 6666 | NETPORT 6666 |
MASTER | #MASTER | #MASTER | MASTER 192.168.0.5 | MASTER 192.168.0.5 |
SLAVE | #SLAVE | SLAVE 1.0.0.4 SLAVE 1.0.0.101 |
#SLAVE | #SLAVE |
USERMAGIC | #USERMAGIC | #USERMAGIC | Slave1 | Slave2 |
●APCUPSD UPS Network Monitorで複数監視
apcupsd-cgiをインストールしたマシンでの作業となります。
hosts.confを編集します
# vi /etc/apcupsd/hosts.conf MONITOR 127.0.0.1 "Local Host" MONITOR 192.168.0.1 "PC1" MONITOR 192.168.0.2 "PC2"保存後、apcupsdを再起動します。
systemctl restart apcupsd監視画面で「Not available: upsfetch: tcp_open failed for ***.***.***.*** port 3551」と表示される場合はiptables等でポートが塞がれていないかどうか確認してください。
●携帯電話へ通知(.pcocmailrcを使用)
apcupsdを設定すると、停電・復電時にroot宛にメールが届きます。
root宛に届いたメールを/etc/aliasesを使用して特定ユーザに自動転送するように設定します。
特定ユーザ宛に届いたUPSに関するメールを携帯電話のメールアドレスに転送するように設定します。
しかし、/etc/aliasesで指定すると、すべてのroot宛のメールが特定ユーザに転送されてしまいます。
転送されたメールから停電・復電時に関連するメールのみを更に、携帯電話に転送するように設定しました(procmailがインストールされていることが必要です)。
まず、rootになり、ローカル上のあるユーザに転送するようにします。保存したら、newaliasesを忘れずに実行します。
# vi /etc/aliases # newaliases続いて、転送先ユーザになり、ホームディレクトリで.procmailrcを編集(/etc/procmailrcを使用している場合はrootで編集)します。
$ vi .procmailrc MAILDIR=$HOME/Maildir LOGFILE=$Maildir/procmail.log LOCKFILE=$MAILDIR/.lockfile UPS=$HOME/.UPS :0 c ← カーボンコピー(複写)を残す * ^Subject: *\/.* ← 件名をチェック * ? echo "$MATCH" | fgrep -if $UPS ← UPSというファイルに書いてある語句がマッチしているか ! *******@docomo.ne.jp ← 実際に転送させる、携帯電話のメールアドレス次に、件名でマッチする語句を、別ファイル(.UPS)に保存しておきます。
$ vi .UPS Power Failure ← 停電した(電圧低下開始) Power has returned ← 復活した(通電開始した)の、2行です。
停電テストを実施し、その結果が無事転送され、転送先ユーザで受信できていれば設定完了です。
その他にも細かく設定できます。詳しくは/usr/share/doc/apcupsd-3.8.5/にドキュメントがあります。
●停電時のメール通知
停電発生時にメールで通知させます。
・sendmailコマンドによる方法
# vi /etc/apcupsd/onbattery #!/bin/sh # # This shell script if placed in /etc/apcupsd # will be called by /etc/apcupsd/apccontrol when the UPS # goes on batteries. # We send an email message to root to notify him. # SYSADMIN="admin@ezweb.co.jp" APCUPSD="apcupsd@example.com" APCUPSD_MAIL="/usr/sbin/sendmail -oi -f $APCUPSD -t $SYSADMIN" ↑ -oi:標準入力からのメッセージの読み取り時に、ピリオド単体を終了記号とはみなさないようにする。 HOSTNAME=`hostname` MSG="$HOSTNAME Power Failure !!!" # ( echo "Subject: $MSG" echo " " echo `date +"%Y/%m/%d %p %I:%M:%S"` # echo `date +"%Y/%m/%d %H:%M:%S"` ← %pを使用したくない場合の例 echo " " /sbin/apcaccess status | grep UPSNAME /sbin/apcaccess status | grep BCHARGE /sbin/apcaccess status | grep TIMELEFT ) | /usr/bin/nkf | $APCUPSD_MAIL ← 日付(%p)表示の午前・午後の文字化け対策 exit 0
・mailコマンドによる方法
# vi /etc/apcupsd/onbattery #!/bin/sh # # This shell script if placed in /etc/apcupsd # will be called by /etc/apcupsd/apccontrol when the UPS # goes on batteries. # We send an email message to root to notify him. # SYSADMIN="admin@ezweb.co.jp" APCUPSD="apcupsd@bigbang.dyndns.org" APCUPSD_MAIL="/bin/mail" HOSTNAME=`hostname` MSG="$HOSTNAME Power Failure !!!" # ( # echo "Subject: $MSG" # echo " " echo `date +"%Y/%m/%d %p %I:%M:%S"` echo " " /sbin/apcaccess status | grep UPSNAME /sbin/apcaccess status | grep BCHARGE /sbin/apcaccess status | grep TIMELEFT ) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN -r $APCUPSD exit 0
●復電時のメール通知
復電時にメールで通知するようにする。
・sendmailコマンドによる方法
# vi /etc/apcupsd/offbattery #!/bin/sh # # This shell script if placed in /etc/apcupsd # will be called by /etc/apcupsd/apccontrol when the # UPS goes back on to the mains after a power failure. # We send an email message to root to notify him. # SYSADMIN="admin@ezweb.co.jp" APCUPSD="apcupsd@example.com" APCUPSD_MAIL="/usr/sbin/sendmail -oi -f $APCUPSD -t $SYSADMIN" ↑ -oi:標準入力からのメッセージの読み取り時に、ピリオド単体を終了記号とはみなさないようにする。 HOSTNAME=`hostname` MSG="$HOSTNAME Power has returned" # ( echo "Subject: $MSG" echo " " echo `date +"%Y/%m/%d %p %I:%M:%S"` # echo `date +"%Y/%m/%d %H:%M:%S"` ← %pを使用したくない場合の例 echo " " /sbin/apcaccess status | grep UPSNAME /sbin/apcaccess status | grep BCHARGE /sbin/apcaccess status | grep TIMELEFT ) | /usr/bin/nkf | $APCUPSD_MAIL ← 日付(%p)表示の午前・午後の文字化け対策 exit 0
・mailコマンドによる方法
# vi /etc/apcupsd/offbattery #!/bin/sh # # This shell script if placed in /etc/apcupsd # will be called by /etc/apcupsd/apccontrol when the # UPS goes back on to the mains after a power failure. # We send an email message to root to notify him. # SYSADMIN="admin@ezweb.co.jp" APCUPSD="apcupsd@example.com" APCUPSD_MAIL="/bin/mail" HOSTNAME=`hostname` MSG="$HOSTNAME Power has returned" # ( # echo "Subject: $MSG" # echo " " echo `date +"%Y/%m/%d %p %I:%M:%S"` # echo `date +"%Y/%m/%d %H:%M:%S"` ← %pを使用したくない場合の例 echo " " /sbin/apcaccess status | grep UPSNAME /sbin/apcaccess status | grep BCHARGE /sbin/apcaccess status | grep TIMELEFT ) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN -r $APCUPSD exit 0停電によるシャットダウン後に復電すると、自動でサーバが起動するように、BIOSの電源設定でAllways ONとしておく。