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.
109 lines
2.6 KiB
109 lines
2.6 KiB
#!/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
|
|
|