#!/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