commit
974f052a77
@ -0,0 +1,77 @@
|
||||
## About
|
||||
|
||||
**Bash APC scripts** - other method for APC AP96xx than apcupsd or nut.
|
||||
|
||||
*I express my gratitude to [Alexey Maksimov](https://blog.it-kb.ru/about-this-blog/) for examples of working snmp handlers - (fork of [his code](https://github.com/Aleksey-Maksimov/check_snmp_apc_ups_state) is in the attachment)*
|
||||
|
||||
### This apc_snmp_metrics.sh script can show current state from networked APC UPS.
|
||||
|
||||
Tested on **Centos 7 GNU/Linux** with **AP9618** in **SURTD3000XLI**, with external termistor **AP9512TBLK**
|
||||
|
||||
<br/>
|
||||
|
||||
## Usage
|
||||
To start you need:
|
||||
1. add IP (string number 14 variable IPS)
|
||||
2. add the user (string number 15 variable SUSER)
|
||||
3. add the bot token (string number 20 variable TOKEN)
|
||||
4. add chat ID (string number 21 variable CHAT_ID)
|
||||
5. add the directory (optional - defalts creates in ```$(pwd)``` dir)
|
||||
6. create an init file (optional, see the example **apcups_telegram.service** file)
|
||||
|
||||
#### For one-shot (non-interactive) - simple run in bash:
|
||||
|
||||
```
|
||||
~# bash apc_snmp_metrics.sh
|
||||
```
|
||||
And there is example of success result (database not created, only verbosed hypothetic name with path) :
|
||||
|
||||
```
|
||||
DB 2023.1112.0043_apc-metric.db
|
||||
WATTS 16
|
||||
AMPRS 2
|
||||
CBATT 17
|
||||
CEEXT 22
|
||||
INPWA 221
|
||||
PRBAT 100
|
||||
REMAT 1:15:05.00
|
||||
BAREP 1
|
||||
DATES 1699739034
|
||||
DATEN 491653013
|
||||
EXITS 0
|
||||
```
|
||||
|
||||
**WATTS** - percent of UPS load in watts
|
||||
**AMPRS** - current load in amperes
|
||||
**CBATT** - internal battery temperature
|
||||
**CEEXT** - external AP9512TBLK temperature
|
||||
**INPWA** - input line voltage
|
||||
**PRBAT** - percent of charge batteries
|
||||
**REMAT** - remain time for current load if 220/230 line turns off
|
||||
**BAREP** - battery replasing key - 1 is OK, 2 is REPLACE
|
||||
**DATES** - unix-seconds (date) of local machine
|
||||
**DATEN** - nano-seconds, each string need for being unique
|
||||
**EXITS** - exit-code from snmpget utility, used in Telegram function
|
||||
|
||||
<br/>
|
||||
|
||||
### For daemonized use ```--run``` argument (mode for systemd unit)
|
||||
|
||||
#### This mode creates sqlite database file, than you can get logged data from it.
|
||||
The database is created anew every time you start it, create a separate directory within /usr/share/ for example.
|
||||
```
|
||||
$ bash apc_snmp_metrics.sh --run
|
||||
DB /root/2023.1112.0043_apc-metric.db
|
||||
```
|
||||
### Warning! Monitor the disk usage, this script cat write more than 2 MB of data per hour!
|
||||
|
||||
#### For reading sqlite database (daemonized data-log) - run
|
||||
|
||||
```~# bash apc_read_sql_strings.sh```
|
||||
This script searching for last writed .db file in specified folder and SELECTing from
|
||||
|
||||
<br/>
|
||||
|
||||
### Also have fun! Bash rules!
|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 55 KiB |
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd # write directory for sqlitedb file
|
||||
DATABASE=$( ls -t *_apc-metric.db | head -1 )
|
||||
du -sh $DATABASE
|
||||
|
||||
sqlreadtable(){
|
||||
cat << FEO | sqlite3 $DATABASE
|
||||
.timeout 2000
|
||||
SELECT * FROM ( \
|
||||
SELECT * FROM mainmetric0 \
|
||||
ORDER BY id DESC LIMIT 10 )\
|
||||
ORDER BY id ;
|
||||
FEO
|
||||
}
|
||||
|
||||
sqlreadtable
|
||||
|
||||
@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
|
||||
OIDS=$( cat << EOF
|
||||
1.3.6.1.4.1.318.1.1.1.4.2.3.0
|
||||
1.3.6.1.4.1.318.1.1.1.4.2.4.0
|
||||
1.3.6.1.4.1.318.1.1.1.2.2.2.0
|
||||
1.3.6.1.4.1.318.1.1.10.2.3.2.1.4.1
|
||||
1.3.6.1.4.1.318.1.1.1.3.2.1.0
|
||||
1.3.6.1.4.1.318.1.1.1.2.2.1.0
|
||||
1.3.6.1.4.1.318.1.1.1.2.2.3.0
|
||||
1.3.6.1.4.1.318.1.1.1.7.2.3.0
|
||||
EOF
|
||||
)
|
||||
IPS='' # add ip of APC AP module
|
||||
SUSER='' # add snmp user (version 3)
|
||||
cd # write directory for sqlitedb file
|
||||
|
||||
funcsend(){
|
||||
if [[ "$EXITS" != "0" ]]; then
|
||||
TOKEN="" # write Telegrambot token
|
||||
CHAT_ID="" # write Telegram chat id
|
||||
curl -s -X POST \
|
||||
https://api.telegram.org/bot"$TOKEN"/sendMessage \
|
||||
-d chat_id="$CHAT_ID" \
|
||||
-d text="ERROR IN APC SNMPGET"
|
||||
sleep 10
|
||||
fi
|
||||
}
|
||||
|
||||
funconexit(){
|
||||
exit 0
|
||||
}
|
||||
trap 'funconexit' SIGINT
|
||||
|
||||
DATABASE="$(date "+%Y.%m%d.%H%M")_apc-metric.db"
|
||||
echo DB "$DATABASE"
|
||||
|
||||
sqlcreatetables(){
|
||||
cat << EFO | sqlite3 "$DATABASE"
|
||||
.timeout 200
|
||||
CREATE TABLE IF NOT EXISTS mainmetric0 \
|
||||
( id INTEGER PRIMARY KEY AUTOINCREMENT, \
|
||||
watts TEXT, amperes TEXT, battemp TEXT, \
|
||||
exttemp TEXT, input TEXT, battperc TEXT, \
|
||||
remainperc TEXT, replace TEXT, unixsec TEXT, \
|
||||
msec TEXT, exitcodes TEXT );
|
||||
EFO
|
||||
}
|
||||
|
||||
sqlwritetable(){
|
||||
sqlcreatetables
|
||||
cat << EOF | sqlite3 "$DATABASE"
|
||||
.timeout 200
|
||||
INSERT INTO mainmetric0 ( watts, amperes, battemp, \
|
||||
exttemp, input, battperc, remainperc, replace, \
|
||||
unixsec, msec, exitcodes ) \
|
||||
VALUES ( "$WATTS", "$AMPRS", \
|
||||
"$CBATT", "$CEEXT", "$INPWA", \
|
||||
"$PRBAT", "$REMAT", "$BAREP", \
|
||||
"$DATES", "$DATEN", "$EXITS" );
|
||||
EOF
|
||||
}
|
||||
|
||||
funcrun(){
|
||||
VARS="$( snmpget -u $SUSER -v 3 $IPS $OIDS 2>/dev/null )"
|
||||
EXITS="$?"
|
||||
# Percentage load (of watts)
|
||||
WATTS=$( echo "$VARS" | grep '4.2.3.0' | grep -o '[^ ]*$' )
|
||||
# Amperes of load
|
||||
AMPRS=$( echo "$VARS" | grep '4.2.4.0' | grep -o '[^ ]*$' )
|
||||
# Celsius on battery
|
||||
CBATT=$( echo "$VARS" | grep '2.2.2.0' | grep -o '[^ ]*$' )
|
||||
# External celsius
|
||||
CEEXT=$( echo "$VARS" | grep '2.1.4.1' | grep -o '[^ ]*$' )
|
||||
# Volts input
|
||||
INPWA=$( echo "$VARS" | grep '3.2.1.0' | grep -o '[^ ]*$' )
|
||||
# battery percents
|
||||
PRBAT=$( echo "$VARS" | grep '2.2.1.0' | grep -o '[^ ]*$' )
|
||||
# remaining time
|
||||
REMAT=$( echo "$VARS" | grep '2.2.3.0' | grep -o '[^ ]*$' )
|
||||
# battery replace (replace if =2)
|
||||
BAREP=$( echo "$VARS" | grep '7.2.3.0' | grep -o '[^ ]*$' )
|
||||
# datetimer
|
||||
DATES=$( date "+%s" )
|
||||
DATEN=$( date "+%N" )
|
||||
}
|
||||
|
||||
RUNANSW01=$( echo "$@" | grep -oP '\--run' | grep -oP 'run' )
|
||||
if [[ "$RUNANSW01" = "run" ]]; then
|
||||
while : ; do
|
||||
funcrun &>/dev/null
|
||||
sqlwritetable
|
||||
funcsend &>/dev/null
|
||||
done
|
||||
else
|
||||
funcrun &>/dev/null
|
||||
funcsend &>/dev/null
|
||||
echo WATTS $WATTS
|
||||
echo AMPRS $AMPRS
|
||||
echo CBATT $CBATT
|
||||
echo CEEXT $CEEXT
|
||||
echo INPWA $INPWA
|
||||
echo PRBAT $PRBAT
|
||||
echo REMAT $REMAT
|
||||
echo BAREP $BAREP
|
||||
echo DATES $DATES
|
||||
echo DATEN $DATEN
|
||||
echo EXITS $EXITS
|
||||
fi
|
||||
@ -0,0 +1,16 @@
|
||||
|
||||
[Unit]
|
||||
Description=APC SNMP TRIGGER
|
||||
Requires=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
ExecStart=/bin/bash /root/apcups_telegram.sh
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
TimeoutSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
IPS='' # add ip of APC AP module
|
||||
SUSER1='' # add snmp user
|
||||
|
||||
funcsnmp(){
|
||||
cd check_snmp_apc_ups_state
|
||||
bash check_snmp_apc_ups_state.sh -H $IPS -P 1 -C $SUSER1
|
||||
}
|
||||
|
||||
funcsend(){
|
||||
TOKEN="" # write Telegrambot token
|
||||
CHAT_ID="" # write Telegram chat id
|
||||
curl -s -X POST \
|
||||
https://api.telegram.org/bot"$TOKEN"/sendMessage \
|
||||
-d chat_id="$CHAT_ID" \
|
||||
-d text="$varfuncsnmp"
|
||||
}
|
||||
|
||||
varf=$( funcsnmp | md5sum )
|
||||
while :; do
|
||||
sleep 1
|
||||
varfuncsnmp="$( funcsnmp )"
|
||||
vars=$( echo "$varfuncsnmp" | md5sum )
|
||||
|
||||
if [[ $vars != $varf ]]; then
|
||||
# echo EDITED $(date "+%F_%s")
|
||||
funcsend > /dev/null
|
||||
fi
|
||||
varf=$vars
|
||||
# sleep 5
|
||||
done
|
||||
@ -0,0 +1,44 @@
|
||||
## About
|
||||
### this is [fork of original](https://github.com/Aleksey-Maksimov/check_snmp_apc_ups_state) by Alexey Maximov
|
||||
###
|
||||
|
||||
**check_snmp_apc_ups_state** - Icinga Plugin Script (Check Command).
|
||||
|
||||
It calculate APC UPS current state from SNMP data in upsBasicStateOutputState
|
||||
|
||||
Tested on **Debian GNU/Linux 9.11 (Stretch)** with **Icinga r2.10.5-1**
|
||||
|
||||
Put here: /usr/lib/nagios/plugins/check_snmp_apc_ups_state.sh
|
||||
|
||||
PreReq: **snpmget** tool
|
||||
|
||||
## Usage
|
||||
|
||||
Options:
|
||||
|
||||
```
|
||||
$ /usr/lib/nagios/plugins/check_snmp_apc_ups_state.sh [OPTIONS]
|
||||
|
||||
Option GNU long option Meaning
|
||||
------ -------------- -------
|
||||
-H --hostname Host name, IP Address
|
||||
-P --protocol SNMP protocol version. Possible values: 1|2c|3
|
||||
-C --community SNMPv1/2c community string for SNMP communication (for example,public)
|
||||
-L --seclevel SNMPv3 securityLevel. Possible values: noAuthNoPriv|authNoPriv|authPriv
|
||||
-a --authproto SNMPv3 auth proto. Possible values: MD5|SHA
|
||||
-x --privproto SNMPv3 priv proto. Possible values: DES|AES
|
||||
-U --secname SNMPv3 username
|
||||
-A --authpassword SNMPv3 authentication password
|
||||
-X --privpasswd SNMPv3 privacy password
|
||||
-q --help Show this message
|
||||
-v --version Print version information and exit
|
||||
|
||||
```
|
||||
Example for all UPS types:
|
||||
|
||||
```
|
||||
$ ./check_snmp_apc_ups_state.sh -H ups001.holding.com -P 2c -C public
|
||||
```
|
||||
Icinga Director integration manual (in Russian):
|
||||
|
||||
[Icinga плагин check_snmp_apc_ups_state для расширенного отслеживания аварийных состояний ИБП APC по данным, полученным по протоколу SNMP из параметра upsBasicStateOutputState](https://blog.it-kb.ru/2019/09/20/icinga-plugin-check_snmp_apc_ups_state-for-abnormal-conditions-monitoring-of-apc-ups-from-snmp-in-flags-from-upsbasicstateoutputstate/)
|
||||
@ -0,0 +1,199 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Icinga Plugin Script (Check Command). It calculate APC UPS current state from SNMP data in upsBasicStateOutputState
|
||||
# Aleksey Maksimov <aleksey.maksimov@it-kb.ru>
|
||||
# Tested on Debian GNU/Linux 9.11 (Stretch) with Icinga r2.10.5-1
|
||||
# Put here: /usr/lib/nagios/plugins/check_snmp_apc_ups_state.sh
|
||||
# Usage example:
|
||||
# ./check_snmp_apc_ups_state.sh -H ups-nmc-01.holding.com -P 2c -C public
|
||||
#
|
||||
PLUGIN_NAME="Icinga Plugin Check Command to calculate APC UPS current state (from SNMP data)"
|
||||
PLUGIN_VERSION="2019.09.16"
|
||||
PRINTINFO=`printf "\n%s, version %s\n \n" "$PLUGIN_NAME" "$PLUGIN_VERSION"`
|
||||
#
|
||||
# Exit codes
|
||||
#
|
||||
codeOK=0
|
||||
codeWARNING=1
|
||||
codeCRITICAL=2
|
||||
codeUNKNOWN=3
|
||||
#
|
||||
# OID
|
||||
#
|
||||
checkOID="1.3.6.1.4.1.318.1.1.1.11.1.1.0"
|
||||
#
|
||||
Usage() {
|
||||
echo "$PRINTINFO"
|
||||
echo "Usage: $0 [OPTIONS]
|
||||
|
||||
Option GNU long option Meaning
|
||||
------ --------------- -------
|
||||
-H --hostname Host name, IP Address
|
||||
-P --protocol SNMP protocol version. Possible values: 1|2c|3
|
||||
-C --community SNMPv1/2c community string for SNMP communication (for example,"public")
|
||||
-L --seclevel SNMPv3 securityLevel. Possible values: noAuthNoPriv|authNoPriv|authPriv
|
||||
-a --authproto SNMPv3 auth proto. Possible values: MD5|SHA
|
||||
-x --privproto SNMPv3 priv proto. Possible values: DES|AES
|
||||
-U --secname SNMPv3 username
|
||||
-A --authpassword SNMPv3 authentication password
|
||||
-X --privpasswd SNMPv3 privacy password
|
||||
-q --help Show this message
|
||||
-v --version Print version information and exit
|
||||
|
||||
"
|
||||
}
|
||||
#
|
||||
# Parse arguments
|
||||
#
|
||||
if [ -z $1 ]; then
|
||||
Usage; exit $codeUNKNOWN;
|
||||
fi
|
||||
#
|
||||
OPTS=`getopt -o H:P:C:L:a:x:U:A:X:qv -l hostname:,protocol:,community:,seclevel:,authproto:,privproto:,secname:,authpassword:,privpasswd:,help,version -- "$@"`
|
||||
eval set -- "$OPTS"
|
||||
while true; do
|
||||
case $1 in
|
||||
-H|--hostname) HOSTNAME=$2 ; shift 2 ;;
|
||||
-P|--protocol)
|
||||
case "$2" in
|
||||
"1"|"2c"|"3") PROTOCOL=$2 ; shift 2 ;;
|
||||
*) printf "Unknown value for option %s. Use '1' or '2c' or '3'\n" "$1" ; exit $codeUNKNOWN ;;
|
||||
esac ;;
|
||||
-C|--community) COMMUNITY=$2 ; shift 2 ;;
|
||||
-L|--seclevel)
|
||||
case "$2" in
|
||||
"noAuthNoPriv"|"authNoPriv"|"authPriv") v3SECLEVEL=$2 ; shift 2 ;;
|
||||
*) printf "Unknown value for option %s. Use 'noAuthNoPriv' or 'authNoPriv' or 'authPriv'\n" "$1" ; exit $codeUNKNOWN ;;
|
||||
esac ;;
|
||||
-a|--authproto)
|
||||
case "$2" in
|
||||
"MD5"|"SHA") v3AUTHPROTO=$2 ; shift 2 ;;
|
||||
*) printf "Unknown value for option %s. Use 'MD5' or 'SHA'\n" "$1" ; exit $codeUNKNOWN ;;
|
||||
esac ;;
|
||||
-x|--privproto)
|
||||
case "$2" in
|
||||
"DES"|"AES") v3PRIVPROTO=$2 ; shift 2 ;;
|
||||
*) printf "Unknown value for option %s. Use 'DES' or 'AES'\n" "$1" ; exit $codeUNKNOWN ;;
|
||||
esac ;;
|
||||
-U|--secname) v3SECNAME=$2 ; shift 2 ;;
|
||||
-A|--authpassword) v3AUTHPWD=$2 ; shift 2 ;;
|
||||
-X|--privpasswd) v3PRIVPWD=$2 ; shift 2 ;;
|
||||
-q|--help) Usage ; exit $codeOK ;;
|
||||
-v|--version) echo "$PRINTINFO" ; exit $codeOK ;;
|
||||
--) shift ; break ;;
|
||||
*) Usage ; exit $codeUNKNOWN ;;
|
||||
esac
|
||||
done
|
||||
#
|
||||
# Set SNMP connection paramaters
|
||||
#
|
||||
vCS=$( echo " -O qvn -v $PROTOCOL" )
|
||||
if [ "$PROTOCOL" = "1" ] || [ "$PROTOCOL" = "2c" ]
|
||||
then
|
||||
vCS=$vCS$( echo " -c $COMMUNITY" );
|
||||
elif [ "$PROTOCOL" = "3" ]
|
||||
then
|
||||
vCS=$vCS$( echo " -l $v3SECLEVEL" );
|
||||
vCS=$vCS$( echo " -a $v3AUTHPROTO" );
|
||||
vCS=$vCS$( echo " -x $v3PRIVPROTO" );
|
||||
vCS=$vCS$( echo " -A $v3AUTHPWD" );
|
||||
vCS=$vCS$( echo " -X $v3PRIVPWD" );
|
||||
vCS=$vCS$( echo " -u $v3SECNAME" );
|
||||
fi
|
||||
#
|
||||
# Calculate APC UPS State
|
||||
#
|
||||
vOIDOut=$( snmpget $vCS $HOSTNAME $checkOID )
|
||||
vOIDOut=$( echo $vOIDOut | tr -d '"' )
|
||||
if [ ${#vOIDOut} -ne 64 ]; then
|
||||
echo "The string length obtained from the SNMP parameter 'upsBasicStateOutputState' is not equal to 64 characters. So we cannot parse the data."
|
||||
exit $codeUNKNOWN
|
||||
fi
|
||||
|
||||
declare -a vFlags=(
|
||||
"Flag 01: Abnormal Condition Present"
|
||||
"Flag 02: On Battery"
|
||||
"Flag 03: Low Battery"
|
||||
"Flag 04: On Line"
|
||||
"Flag 05: Replace Battery"
|
||||
"Flag 06: Serial Communication Established"
|
||||
"Flag 07: AVR Boost Active"
|
||||
"Flag 08: AVR Trim Active"
|
||||
"Flag 09: Overload"
|
||||
"Flag 10: Runtime Calibration"
|
||||
"Flag 11: Batteries Discharged"
|
||||
"Flag 12: Manual Bypass"
|
||||
"Flag 13: Software Bypass"
|
||||
"Flag 14: In Bypass due to Internal Fault"
|
||||
"Flag 15: In Bypass due to Supply Failure"
|
||||
"Flag 16: In Bypass due to Fan Failure"
|
||||
"Flag 17: Sleeping on a Timer"
|
||||
"Flag 18: Sleeping until Utility Power Returns"
|
||||
"Flag 19: On"
|
||||
"Flag 20: Rebooting"
|
||||
"Flag 21: Battery Communication Lost"
|
||||
"Flag 22: Graceful Shutdown Initiated"
|
||||
"Flag 23: Smart Boost or Smart Trim Fault"
|
||||
"Flag 24: Bad Output Voltage"
|
||||
"Flag 25: Battery Charger Failure"
|
||||
"Flag 26: High Battery Temperature"
|
||||
"Flag 27: Warning Battery Temperature"
|
||||
"Flag 28: Critical Battery Temperature"
|
||||
"Flag 29: Self Test In Progress"
|
||||
"Flag 30: Low Battery / On Battery"
|
||||
"Flag 31: Graceful Shutdown Issued by Upstream Device"
|
||||
"Flag 32: Graceful Shutdown Issued by Downstream Device"
|
||||
"Flag 33: No Batteries Attached"
|
||||
"Flag 34: Synchronized Command is in Progress"
|
||||
"Flag 35: Synchronized Sleeping Command is in Progress"
|
||||
"Flag 36: Synchronized Rebooting Command is in Progress"
|
||||
"Flag 37: Inverter DC Imbalance"
|
||||
"Flag 38: Transfer Relay Failure"
|
||||
"Flag 39: Shutdown or Unable to Transfer"
|
||||
"Flag 40: Low Battery Shutdown"
|
||||
"Flag 41: Electronic Unit Fan Failure"
|
||||
"Flag 42: Main Relay Failure"
|
||||
"Flag 43: Bypass Relay Failure"
|
||||
"Flag 44: Temporary Bypass"
|
||||
"Flag 45: High Internal Temperature"
|
||||
"Flag 46: Battery Temperature Sensor Fault"
|
||||
"Flag 47: Input Out of Range for Bypass"
|
||||
"Flag 48: DC Bus Overvoltage"
|
||||
"Flag 49: PFC Failure"
|
||||
"Flag 50: Critical Hardware Fault"
|
||||
"Flag 51: Green Mode/ECO Mode"
|
||||
"Flag 52: Hot Standby"
|
||||
"Flag 53: Emergency Power Off (EPO) Activated"
|
||||
"Flag 54: Load Alarm Violation"
|
||||
"Flag 55: Bypass Phase Fault"
|
||||
"Flag 56: UPS Internal Communication Failure"
|
||||
"Flag 57: Efficiency Booster Mode"
|
||||
"Flag 58: Off"
|
||||
"Flag 59: Standby"
|
||||
"Flag 60: Minor or Environment Alarm")
|
||||
|
||||
|
||||
vFlag1=$( echo $vOIDOut | awk '{print substr($0,0,1)}' )
|
||||
|
||||
vFlagsStr=""
|
||||
vIndex=0
|
||||
for vFlag in "${vFlags[@]}"; do
|
||||
|
||||
vFlagN=$( echo ${vOIDOut:vIndex:1} )
|
||||
if [ "$vFlagN" -eq "1" ]; then
|
||||
vFlagsStr=$vFlagsStr$( echo "\n${vFlag}" );
|
||||
fi
|
||||
let vIndex=${vIndex}+1
|
||||
done
|
||||
|
||||
#
|
||||
# Icinga Check Plugin output
|
||||
#
|
||||
if [ "$vFlag1" -eq "1" ]; then
|
||||
echo -e "APC UPS State CRITICAL \nCurrent active flags:$vFlagsStr"
|
||||
exit $codeCRITICAL
|
||||
elif [ "$vFlag1" -eq "0" ]; then
|
||||
echo -e "APC UPS State OK \nCurrent active flags:$vFlagsStr"
|
||||
exit $codeOK
|
||||
fi
|
||||
exit $codeUNKNOWN
|
||||
Loading…
Reference in new issue