You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apc_bash/apc_snmp_metrics.sh

110 lines
2.6 KiB

2 years ago
#!/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