ネットワークマスター |
マスター側ホスト(サーバー)とUPS1200LXはUSBケーブルで接続。
マスター側ホスト(サーバー)のIPアドレスは192.168.2.5としています。
スレーブ側ホスト(サーバー)のIPアドレスは192.168.2.100としています。
マスター側ホスト(サーバー)のTCPポート22及び3493を開放する。
default.battery.voltage.high を 26.0 ボルトとしています。
default.battery.voltage.low を 20.8 ボルトとしています。
centos6.4ではEPELリポジトリーを導入後下記コマンドでNUT2.6.5-2がインストールされます。
yum install nut nut-client nut-cgi
インストール後下記コンフィギュレーションファイルを変更して下さい。
下記ファイルを変更。
限定されたホストのみよりの許可の設定
/etc/hosts.allow
# # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # # /etc/ upsd : 192.168.2. <-------------------------------------------------この行追加 sshd : 192.168.2.100 <----------------------------------------------この行追加 |
下記ファイルを変更。
限定されたホスト以外からの拒否の設定
/etc/hosts.deny
# # hosts.deny This file contains access rules which are used to # deny connections to network services that either use # the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # The rules in this file can also be set up in # /etc/hosts.allow with a 'deny' option instead. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # # /etc/ ALL : ALL <--------------------------------------この行が在るのを確認無ければ追加 |
下記ファイルは変更不要。
/lib/udev/rules.d/62-nut-usbups.rules
下記ファイルは変更不要。
/etc/ups/hosts.conf
下記ファイルを作成しプログラムとして実行出来るようにアクセス権を付与してください。
このスクリプトを実行することにより、Network UPS Toolが起動します。
因みに/etc/rc.d/rc.local等に登録した場合、確実にシステムがクラッシュします。(upsmon -D の-Dオプションで)
upsmon -D の -D オプション付加でNOTIFYCMD設定のコマンドが起動できるようになります。
(これが判るまで丸一週間費やしました。。。。。。。マニュアルのどこにも書かれていません。。。ブツブツ)
因みにdebian GNU/linux 7.2.0では-Dオプションが機能しませんので、充電率によるシャットダウンは不可です。
/usr/sbin/nut
#!/bin/bash # # nut start # #/usr/sbin/ /sbin/blazer_usb -a ups1200lx-1 /sbin/upsdrvctl start /usr/sbin/upsd /usr/sbin/upsmon -D |
下記ファイルの変更。
/etc/ups/nut.conf
# Network UPS Tools: example nut.conf # ############################################################################## # General section ############################################################################## # The MODE determines which part of the NUT is to be started, and which # configuration files must be modified. # # This file try to standardize the various files being found in the field, like # /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based # systems, ... Distribution's init script should source this file to see which # component(s) has to be started. # # The values of MODE can be: # - none: NUT is not configured, or use the Integrated Power Management, or use # some external system to startup NUT components. So nothing is to be started. # - standalone: This mode address a local only configuration, with 1 UPS # protecting the local system. This implies to start the 3 NUT layers (driver, # upsd and upsmon) and the matching configuration files. This mode can also # address UPS redundancy. # - netserver: same as for the standalone configuration, but also need # some more network access controls (firewall, tcp-wrappers) and possibly a # specific LISTEN directive in upsd.conf. # Since this MODE is opened to the network, a special care should be applied # to security concerns. # - netclient: this mode only requires upsmon. # # IMPORTANT NOTE: # This file is intended to be sourced by shell scripts. # You MUST NOT use spaces around the equal sign! MODE=netserver <----------------------------------------------この行変更 |
下記ファイルの変更。
/etc/ups/ups.conf
# Network UPS Tools: example ups.conf # # --- SECURITY NOTE --- # # If you use snmp-ups and set a community string in here, you # will have to secure this file to keep other users from obtaining # that string. It needs to be readable by upsdrvctl and any drivers, # and by upsd. # # --- # # This is where you configure all the UPSes that this system will be # monitoring directly. These are usually attached to serial ports, but # USB devices and SNMP devices are also supported. # # This file is used by upsdrvctl to start and stop your driver(s), and # is also used by upsd to determine which drivers to monitor. The # drivers themselves also read this file for configuration directives. # # The general form is: # # [upsname] # driver = <drivername> # port = <portname> # < any other directives here > # # The section header ([upsname]) can be just about anything as long as # it is a single word inside brackets. upsd uses this to uniquely # identify a UPS on this system. # # If you have a UPS called snoopy, your section header would be "[snoopy]". # On a system called "doghouse", the line in your upsmon.conf to monitor # it would look something like this: # # MONITOR snoopy@doghouse 1 upsmonuser mypassword master # # It might look like this if monitoring in slave mode: # # MONITOR snoopy@doghouse 1 upsmonuser mypassword slave # # Configuration directives # ------------------------ # # These directives are common to all drivers that support ups.conf: # # driver: REQUIRED. Specify the program to run to talk to this UPS. # apcsmart, bestups, and sec are some examples. # # port: REQUIRED. The serial port where your UPS is connected. # /dev/ttyS0 is usually the first port on Linux boxes, for example. # # sdorder: optional. When you have multiple UPSes on your system, you # usually need to turn them off in a certain order. upsdrvctl # shuts down all the 0s, then the 1s, 2s, and so on. To exclude # a UPS from the shutdown sequence, set this to -1. # # The default value for this parameter is 0. # # nolock: optional, and not recommended for use in this file. # # If you put nolock in here, the driver will not lock the # serial port every time it starts. This may allow other # processes to seize the port if you start more than one by # mistake. # # This is only intended to be used on systems where locking # absolutely must be disabled for the software to work. # # maxstartdelay: optional. This can be set as a global variable # above your first UPS definition and it can also be # set in a UPS section. This value controls how long # upsdrvctl will wait for the driver to finish starting. # This keeps your system from getting stuck due to a # broken driver or UPS. # # The default is 45 seconds. # # # Anything else is passed through to the hardware-specific part of # the driver. # # Examples # -------- # # A simple example for a UPS called "powerpal" that uses the blazer_ser # driver on /dev/ttyS0 is: # # [powerpal] # driver = blazer_ser # port = /dev/ttyS0 # desc = "Web server" # # If your UPS driver requires additional settings, you can specify them # here. For example, if it supports a setting of "1234" for the # variable "cable", it would look like this: # # [myups] # driver = mydriver # port = /dev/ttyS1 # cable = 1234 # desc = "Something descriptive" # # To find out if your driver supports any extra settings, start it with # the -h option and/or read the driver's documentation. [ups1200lx-1] <---------------------------------------------------この行追加 driver = blazer_usb <-----------------------------------------------この行追加 port = auto <-----------------------------------------------------この行追加 vendorid = 0001 <-------------------------------------------------この行追加 productid = 0000 <------------------------------------------------この行追加 subdriver = krauler <-----------------------------------------------この行追加 desc = "Soundhouse UPS 1200LX" <---------------------------------この行追加 default.battery.voltage.high = 26.0 <-----------------------------------この行追加 default.battery.voltage.low = 20.8 <------------------------------------この行追加 |
下記ファイルの変更。
LISTENにローカル・ループ・IPアドレスと自IPアドレスを設定してください。
自IPアドレスはスレーブのupsmonより参照されます。
LISTENのIPアドレスの横に記されている3493はTCPポートですので、ファイアーウォールでこのポート
を開放する必要があります。
/etc/ups/upsd.conf
# Network UPS Tools: example upsd configuration file # # This file contains access control data, you should keep it secure. # # It should only be readable by the user that upsd becomes. See the FAQ. # # Each entry below provides usage and default value. # ======================================================================= # MAXAGE <seconds> # MAXAGE 15 # # This defaults to 15 seconds. After a UPS driver has stopped updating # the data for this many seconds, upsd marks it stale and stops making # that information available to clients. After all, the only thing worse # than no data is bad data. # # You should only use this if your driver has difficulties keeping # the data fresh within the normal 15 second interval. Watch the syslog # for notifications from upsd about staleness. # ======================================================================= # STATEPATH <path> # STATEPATH /var/run/nut # # Tell upsd to look for the driver state sockets in 'path' rather # than the default that was compiled into the program. # ======================================================================= # LISTEN <address> [<port>] # LISTEN 127.0.0.1 3493 # LISTEN ::1 3493 # # This defaults to the localhost listening addresses and port 3493. # In case of IP v4 or v6 disabled kernel, only the available one will be used. # # You may specify each interface you want upsd to listen on for connections, # optionally with a port number. # # You may need this if you have multiple interfaces on your machine and # you don't want upsd to listen to all interfaces (for instance on a # firewall, you may not want to listen to the external interface). # # This will only be read at startup of upsd. If you make changes here, # you'll need to restart upsd, reload will have no effect. # ======================================================================= # MAXCONN <connections> # MAXCONN 1024 # # This defaults to maximum number allowed on your system. Each UPS, each # LISTEN address and each client count as one connection. If the server # runs out of connections, it will no longer accept new incoming client # connections. Only set this if you know exactly what you're doing. # ======================================================================= # CERTFILE <certificate file> # # When compiled with SSL support, you can enter the certificate file here. # The certificates must be in PEM format and must be sorted starting with # the subject's certificate (server certificate), followed by intermediate # CA certificates (if applicable_ and the highest level (root) CA. It should # end with the server key. See 'docs/security.txt' or the Security chapter of # NUT user manual for more information on the SSL support in NUT. LISTEN 127.0.0.1 3493 <----------------------------------------------この行追加 LISTEN 192.168.2.5 3493 <--------------------------------------------この行追加 |
下記ファイルの変更。
/etc/ups/upsd.users
# Network UPS Tools: Example upsd.users # # This file sets the permissions for upsd - the UPS network daemon. # Users are defined here, are given passwords, and their privileges are # controlled here too. Since this file will contain passwords, keep it # secure, with only enough permissions for upsd to read it. # -------------------------------------------------------------------------- # Each user gets a section. To start a section, put the username in # brackets on a line by itself. To set something for that user, specify # it under that section heading. The username is case-sensitive, so # admin and AdMiN are two different users. # # Possible settings: # # password: The user's password. This is case-sensitive. # # -------------------------------------------------------------------------- # # actions: Let the user do certain things with upsd. # # Valid actions are: # # SET - change the value of certain variables in the UPS # FSD - set the "forced shutdown" flag in the UPS # # -------------------------------------------------------------------------- # # instcmds: Let the user initiate specific instant commands. Use "ALL" # to grant all commands automatically. There are many possible # commands, so use 'upscmd -l' to see what your hardware supports. Here # are a few examples: # # test.panel.start - Start a front panel test # test.battery.start - Start battery test # test.battery.stop - Stop battery test # calibrate.start - Start calibration # calibrate.stop - Stop calibration # # -------------------------------------------------------------------------- # # Example: # # [admin] # password = mypass # actions = SET # instcmds = ALL # # # --- Configuring for a user who can execute tests only # # [testuser] # password = pass # instcmds = test.battery.start # instcmds = test.battery.stop # # --- Configuring for upsmon # # To add a user for your upsmon, use this example: # # [upsmon] # password = pass # upsmon master # or # upsmon slave # # The matching MONITOR line in your upsmon.conf would look like this: # # MONITOR myups@localhost 1 upsmon pass master (or slave) [monmaster] <---------------------------------------------------------この行追加 password=passw1 <-----------------------------------------------------この行追加 upsmon master <-------------------------------------------------------この行追加 [monslave] <-----------------------------------------------------------この行追加 password=passw2 <-----------------------------------------------------この行追加 upsmon slave <---------------------------------------------------------この行追加 |
下記ファイルの変更。
SHUTDOWNCMD "/sbin/shutdown -h +0 <---この行をコメントアウトして下さい。コメントアウトしない
ままにしておくと、マスター側だけシャットダウンすることになりかねません。
MONITORのIPアドレスには、upsd.confのLISTENで設定した自IPアドレスを設定してください。
/etc/ups/upsmon.conf
# Network UPS Tools: example upsmon configuration # # This file contains passwords, so keep it secure. # -------------------------------------------------------------------------- # RUN_AS_USER <userid> # # By default, upsmon splits into two processes. One stays as root and # waits to run the SHUTDOWNCMD. The other one switches to another userid # and does everything else. # # The default nonprivileged user is set at compile-time with # 'configure --with-user=...'. # # You can override it with '-u <user>' when starting upsmon, or just # define it here for convenience. # # Note: if you plan to use the reload feature, this file (upsmon.conf) # must be readable by this user! Since it contains passwords, DO NOT # make it world-readable. Also, do not make it writable by the upsmon # user, since it creates an opportunity for an attack by changing the # SHUTDOWNCMD to something malicious. # # For best results, you should create a new normal user like "nutmon", # and make it a member of a "nut" group or similar. Then specify it # here and grant read access to the upsmon.conf for that group. # # This user should not have write access to upsmon.conf. # # RUN_AS_USER nutmon # -------------------------------------------------------------------------- # MONITOR <system> <powervalue> <username> <password> ("master"|"slave") # # List systems you want to monitor. Not all of these may supply power # to the system running upsmon, but if you want to watch it, it has to # be in this section. # # You must have at least one of these declared. # # <system> is a UPS identifier in the form <upsname>@<hostname>[:<port>] # like ups@localhost, su700@mybox, etc. # # Examples: # # - "su700@mybox" means a UPS called "su700" on a system called "mybox" # # - "fenton@bigbox:5678" is a UPS called "fenton" on a system called # "bigbox" which runs upsd on port "5678". # # The UPS names like "su700" and "fenton" are set in your ups.conf # in [brackets] which identify a section for a particular driver. # # If the ups.conf on host "doghouse" has a section called "snoopy", the # identifier for it would be "snoopy@doghouse". # # <powervalue> is an integer - the number of power supplies that this UPS # feeds on this system. Most computers only have one power supply, so this # is normally set to 1. You need a pretty big or special box to have any # other value here. # # You can also set this to 0 for a system that doesn't supply any power, # but you still want to monitor. Use this when you want to hear about # changes for a given UPS without shutting down when it goes critical, # unless <powervalue> is 0. # # <username> and <password> must match an entry in that system's # upsd.users. If your username is "monmaster" and your password is # "blah", the upsd.users would look like this: # # [monmaster] # password = blah # upsmon master (or slave) # # "master" means this system will shutdown last, allowing the slaves # time to shutdown first. # # "slave" means this system shuts down immediately when power goes critical. # # Examples: # # MONITOR myups@bigserver 1 monmaster blah master # MONITOR su700@server.example.com 1 upsmon secretpass slave # MONITOR myups@localhost 1 upsmon pass master (or slave) # -------------------------------------------------------------------------- # MINSUPPLIES <num> # # Give the number of power supplies that must be receiving power to keep # this system running. Most systems have one power supply, so you would # put "1" in this field. # # Large/expensive server type systems usually have more, and can run with # a few missing. The HP NetServer LH4 can run with 2 out of 4, for example, # so you'd set that to 2. The idea is to keep the box running as long # as possible, right? # # Obviously you have to put the redundant supplies on different UPS circuits # for this to make sense! See big-servers.txt in the docs subdirectory # for more information and ideas on how to use this feature. MINSUPPLIES 1 # -------------------------------------------------------------------------- # SHUTDOWNCMD "<command>" # # upsmon runs this command when the system needs to be brought down. # # This should work just about everywhere ... if it doesn't, well, change it. #SHUTDOWNCMD "/sbin/shutdown -h +0" <--------------------------この行コメントアウト # -------------------------------------------------------------------------- # NOTIFYCMD <command> # # upsmon calls this to send messages when things happen # # This command is called with the full text of the message as one argument. # The environment string NOTIFYTYPE will contain the type string of # whatever caused this event to happen. # # Note that this is only called for NOTIFY events that have EXEC set with # NOTIFYFLAG. See NOTIFYFLAG below for more details. # # Making this some sort of shell script might not be a bad idea. For more # information and ideas, see pager.txt in the docs directory. # # Example: # NOTIFYCMD /usr/local/ups/bin/notifyme # -------------------------------------------------------------------------- # POLLFREQ <n> # # Polling frequency for normal activities, measured in seconds. # # Adjust this to keep upsmon from flooding your network, but don't make # it too high or it may miss certain short-lived power events. POLLFREQ 5 # -------------------------------------------------------------------------- # POLLFREQALERT <n> # # Polling frequency in seconds while UPS on battery. # # You can make this number lower than POLLFREQ, which will make updates # faster when any UPS is running on battery. This is a good way to tune # network load if you have a lot of these things running. # # The default is 5 seconds for both this and POLLFREQ. POLLFREQALERT 5 # -------------------------------------------------------------------------- # HOSTSYNC - How long upsmon will wait before giving up on another upsmon # # The master upsmon process uses this number when waiting for slaves to # disconnect once it has set the forced shutdown (FSD) flag. If they # don't disconnect after this many seconds, it goes on without them. # # Similarly, upsmon slave processes wait up to this interval for the # master upsmon to set FSD when a UPS they are monitoring goes critical - # that is, on battery and low battery. If the master doesn't do its job, # the slaves will shut down anyway to avoid damage to the file systems. # # This "wait for FSD" is done to avoid races where the status changes # to critical and back between polls by the master. HOSTSYNC 15 # -------------------------------------------------------------------------- # DEADTIME - Interval to wait before declaring a stale ups "dead" # # upsmon requires a UPS to provide status information every few seconds # (see POLLFREQ and POLLFREQALERT) to keep things updated. If the status # fetch fails, the UPS is marked stale. If it stays stale for more than # DEADTIME seconds, the UPS is marked dead. # # A dead UPS that was last known to be on battery is assumed to have gone # to a low battery condition. This may force a shutdown if it is providing # a critical amount of power to your system. # # Note: DEADTIME should be a multiple of POLLFREQ and POLLFREQALERT. # Otherwise you'll have "dead" UPSes simply because upsmon isn't polling # them quickly enough. Rule of thumb: take the larger of the two # POLLFREQ values, and multiply by 3. DEADTIME 15 # -------------------------------------------------------------------------- # POWERDOWNFLAG - Flag file for forcing UPS shutdown on the master system # # upsmon will create a file with this name in master mode when it's time # to shut down the load. You should check for this file's existence in # your shutdown scripts and run 'upsdrvctl shutdown' if it exists. # # See the shutdown.txt file in the docs subdirectory for more information. #POWERDOWNFLAG /etc/killpower <---------------------------------この行コメントアウト # -------------------------------------------------------------------------- # NOTIFYMSG - change messages sent by upsmon when certain events occur # # You can change the default messages to something else if you like. # # NOTIFYMSG <notify type> "message" # # NOTIFYMSG ONLINE "UPS %s on line power" # NOTIFYMSG ONBATT "UPS %s on battery" # NOTIFYMSG LOWBATT "UPS %s battery is low" # NOTIFYMSG FSD "UPS %s: forced shutdown in progress" # NOTIFYMSG COMMOK "Communications with UPS %s established" # NOTIFYMSG COMMBAD "Communications with UPS %s lost" # NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding" # NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced" # NOTIFYMSG NOCOMM "UPS %s is unavailable" # NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible" # # Note that %s is replaced with the identifier of the UPS in question. # # Possible values for <notify type>: # # ONLINE : UPS is back online # ONBATT : UPS is on battery # LOWBATT : UPS has a low battery (if also on battery, it's "critical") # FSD : UPS is being shutdown by the master (FSD = "Forced Shutdown") # COMMOK : Communications established with the UPS # COMMBAD : Communications lost to the UPS # SHUTDOWN : The system is being shutdown # REPLBATT : The UPS battery is bad and needs to be replaced # NOCOMM : A UPS is unavailable (can't be contacted for monitoring) # NOPARENT : The process that shuts down the system has died (shutdown impossible) # -------------------------------------------------------------------------- # NOTIFYFLAG - change behavior of upsmon when NOTIFY events occur # # By default, upsmon sends walls (global messages to all logged in users) # and writes to the syslog when things happen. You can change this. # # NOTIFYFLAG <notify type> <flag>[+<flag>][+<flag>] ... # # NOTIFYFLAG ONLINE SYSLOG+WALL # NOTIFYFLAG ONBATT SYSLOG+WALL # NOTIFYFLAG LOWBATT SYSLOG+WALL # NOTIFYFLAG FSD SYSLOG+WALL # NOTIFYFLAG COMMOK SYSLOG+WALL # NOTIFYFLAG COMMBAD SYSLOG+WALL # NOTIFYFLAG SHUTDOWN SYSLOG+WALL # NOTIFYFLAG REPLBATT SYSLOG+WALL # NOTIFYFLAG NOCOMM SYSLOG+WALL # NOTIFYFLAG NOPARENT SYSLOG+WALL # # Possible values for the flags: # # SYSLOG - Write the message in the syslog # WALL - Write the message to all users on the system # EXEC - Execute NOTIFYCMD (see above) with the message # IGNORE - Don't do anything # # If you use IGNORE, don't use any other flags on the same line. # -------------------------------------------------------------------------- # RBWARNTIME - replace battery warning time in seconds # # upsmon will normally warn you about a battery that needs to be replaced # every 43200 seconds, which is 12 hours. It does this by triggering a # NOTIFY_REPLBATT which is then handled by the usual notify structure # you've defined above. # # If this number is not to your liking, override it here. RBWARNTIME 43200 # -------------------------------------------------------------------------- # NOCOMMWARNTIME - no communications warning time in seconds # # upsmon will let you know through the usual notify system if it can't # talk to any of the UPS entries that are defined in this file. It will # trigger a NOTIFY_NOCOMM by default every 300 seconds unless you # change the interval with this directive. NOCOMMWARNTIME 300 # -------------------------------------------------------------------------- # FINALDELAY - last sleep interval before shutting down the system # # On a master, upsmon will wait this long after sending the NOTIFY_SHUTDOWN # before executing your SHUTDOWNCMD. If you need to do something in between # those events, increase this number. Remember, at this point your UPS is # almost depleted, so don't make this too high. # # Alternatively, you can set this very low so you don't wait around when # it's time to shut down. Some UPSes don't give much warning for low # battery and will require a value of 0 here for a safe shutdown. # # Note: If FINALDELAY on the slave is greater than HOSTSYNC on the master, # the master will give up waiting for the slave to disconnect. FINALDELAY 5 RUN_AS_USER root <------------------------------------------------------この行追加 MONITOR ups1200lx-1@192.168.2.5 1 monmaster passw1 master <----------------この行追加 NOTIFYCMD /etc/ups/upscheck <-------------------------------------------この行追加 NOTIFYMSG ONLINE "UPS %s on line power" <--------------------------------この行追加 NOTIFYMSG ONBATT "UPS %s on battery" <---------------------------------この行追加 NOTIFYMSG LOWBATT "UPS %s battery is low" <-----------------------------この行追加 NOTIFYMSG FSD "UPS %s: forced shutdown in progress" <----------------------この行追加 NOTIFYMSG COMMOK "Communications with UPS %s established" <--------------この行追加 NOTIFYMSG COMMBAD "Communications with UPS %s lost" <-------------------この行追加 NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding" <---------------この行追加 NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced" <----------------この行追加 NOTIFYMSG NOCOMM "UPS %s is unavailable" <------------------------------この行追加 NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible" <----この行追加 NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC <--------------------------------この行追加 NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC <-------------------------------この行追加 NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC <------------------------------この行追加 NOTIFYFLAG FSD SYSLOG+WALL+EXEC <-----------------------------------この行追加 NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC <------------------------------この行追加 NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC <-----------------------------この行追加 NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC <----------------------------この行追加 NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC <-----------------------------この行追加 NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC <------------------------------この行追加 NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC <-----------------------------この行追加 |
下記ファイルを作成しプログラムとして実行出来るようにアクセス権を付与してください。
マスター側にbsshユーザーを登録。
STDWCHARGE は、バッテリーに余裕を持たせて30パーセントにしていますが、お好みで適当に設定して下さい。
マスター側をスタンドアローンで動作させる場合は、if [ $SHUTDOWNF = 1 ] ; then 以下を shutdown -h +0 のみにして下さい。
/etc/ups/upscheck
1 : #!/bin/bash 2 : # upscheck 3 : # check ups.status. check battery.charge. & shutdown, if lower than battery.charge. 4 : # NUT NOTIFYCMD script 5 : 6 : PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/etc/ups/ 7 : 8 : UPS='ups1200lx-1' 9 : STDWCHARGE=60 10 : CHARGE=0 11 : STATUS=0 12 : TIME=15 13 : STIME=15 14 : UPSLOG="/etc/ups/upslog" 15 : ONL="/home/bssh/onl" 16 : BATTSDF="/home/bssh/battsdf" 17 : SDF="/home/bssh/sdf" 18 : SDFOK="/home/bssh/sdfok" 19 : SDFOKEND="/home/bssh/sdfokend" 20 : SHUTDOWNF=0 21 : BATTSDFF=0 22 : ONLF=0 23 : SDFF=0 24 : SDFOKF=0 25 : 26 : if [ "$NOTIFYTYPE" = "ONBATT" ] ; then 27 : rm $ONL 28 : rm $BATTSDF 29 : CHARGE=$(upsc $UPS battery.charge) 30 : while [ $STDWCHARGE -lt $CHARGE ] ; do 31 : STATUS=$(upsc $UPS ups.status) 32 : echo STATUS=$STATUS 33 : case $STATUS in 34 : OL ) touch $ONL ; 35 : exit 0 ;; 36 : OB ) sleep $TIME ;; 37 : * ) sleep $TIME ;; 38 : esac 39 : CHARGE=$(upsc $UPS battery.charge) 40 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 41 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 42 : done 43 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 44 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 45 : touch $BATTSDF 46 : SHUTDOWNF=1 47 : 48 : elif [ "$NOTIFYTYPE" = "ONLINE" ] ; then 49 : CHARGE=$(upsc $UPS battery.charge) 50 : STATUS=$(upsc $UPS ups.status) 51 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 52 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 53 : SHUTDOWNF=0 54 : 55 : elif [ "$NOTIFYTYPE" = "LOWBATT" ] ; then 56 : CHARGE=$(upsc $UPS battery.charge) 57 : STATUS=$(upsc $UPS ups.status) 58 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 59 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 60 : SHUTDOWNF=1 61 : 62 : elif [ "$NOTIFYTYPE" = "FSD" ] ; then 63 : CHARGE=$(upsc $UPS battery.charge) 64 : STATUS=$(upsc $UPS ups.status) 65 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 66 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 67 : SHUTDOWNF=1 68 : 69 : elif [ "$NOTIFYTYPE" = "SHUTDOWN" ] ; then 70 : CHARGE=$(upsc $UPS battery.charge) 71 : STATUS=$(upsc $UPS ups.status) 72 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 73 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 74 : SHUTDOWNF=1 75 : 76 : elif [ "$NOTIFYTYPE" = "NOPARENT" ] ; then 77 : CHARGE=$(upsc $UPS battery.charge) 78 : STATUS=$(upsc $UPS ups.status) 79 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 80 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 81 : SHUTDOWNF=1 82 : 83 : elif [ "$NOTIFYTYPE" = "COMMBAD" ] ; then 84 : CHARGE=$(upsc $UPS battery.charge) 85 : STATUS=$(upsc $UPS ups.status) 86 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 87 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 88 : SHUTDOWNF=0 89 : 90 : else 91 : CHARGE=$(upsc $UPS battery.charge) 92 : STATUS=$(upsc $UPS ups.status) 93 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE 94 : echo $(date) STDWCHARGE=$STDWCHARGE CHARGE=$CHARGE STATUS=$STATUS NOTIFYTYPE=$NOTIFYTYPE >> $UPSLOG 95 : SHUTDOWNF=0 96 : fi 97 : echo SHUTDOWN=$SHUTDOWNF 98 : echo SHUTDOWN=$SHUTDOWNF >> $UPSLOG 99 : 100 : if [ $SHUTDOWNF = 1 ] ; then 101 : touch $SDF 102 : cp $SDFOK $SDFOKEND 103 : while [ $? = 1 ] ; do 104 : sleep $STIME 105 : cp $SDFOK $SDFOKEND 106 : done 107 : cp $ONL $SDFOKEND 108 : ONLF=$? 109 : cp $BATTSDF $SDFOKEND 110 : BATTSDFF=$? 111 : cp $SDF $SDFOKEND 112 : SDFF=$? 113 : cp $SDFOK $SDFOKEND 114 : SDFOKF=$? 115 : echo ONL=$ONLF BATTSDF=$BATTSDFF SDF=$SDFF SDFOK=$SDFOKF 116 : echo ONL=$ONLF BATTSDF=$BATTSDFF SDF=$SDFF SDFOK=$SDFOKF >> $UPSLOG 117 : rm $ONL 118 : rm $BATTSDF 119 : rm $SDF 120 : rm $SDFOK 121 : rm $SDFOKEND 122 : shutdown -h +0 123 : fi 124 : 125 : |
以上のファイル変更・作成後、マスターホスト(サーバー)の端末でnutを起動させれば、UPSがSTDWCHARGE= で設定した
充電率未満になると、マスター側ホスト(サーバー)がスレーブ側ホスト(サーバー)シャットダウン開始後シャットダウンします。
また各種異常時等にもシャットダウンします。
以下はマスター側のログです。参考にしてください。
/etc/ups/upslog
2013年 11月 12日 火曜日 09:11:55 JST STDWCHARGE=70 CHARGE=69 STATUS=OB NOTIFYTYPE=ONBATT |