Windows Tips & News

Come monitorare lo stato dell'UPS USB tramite SNMP

Come monitorare lo stato dell'UPS USB tramite SNMP

Esistono diversi computer con UPS collegato tramite USB. Tutti i computer utilizzano il programma apcupsd. Supponi di voler aggregare informazioni sullo stato dell'alimentazione per ogni unità in un unico posto. Poiché snmpd è già in esecuzione lì, sarebbe logico espandere la sua funzionalità.

La soluzione di seguito, per gentile concessione del Blog dell'amministratore, raccoglierà i dati da tutte le unità SNMPD contemporaneamente.

Per monitorare lo stato dell'UPS USB tramite SNMP, dobbiamo prima modificare la configurazione del demone snmp.

preparativi

Aggiunge quanto segue alla configurazione snmpd.conf.

# UPS APC
passare .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh

Il contenuto dello script /etc/snmp/apcupsd.sh è il seguente.

#!/bin/sh -f # Verifica che apcupsd sia online. apcaccess > /dev/null 2>&1 || exit 0 POSTO=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # OID richiesto # # Elabora le richieste SET semplicemente registrando il valore assegnato. # Nota che tali "assegnamenti" non sono persistenti, # né la sintassi o il valore richiesto sono convalidati. # if [ "$1" = "-s" ]; poi. echo $* >> /tmp/passtest.log. uscita 0. fi # # Richieste GETNEXT - determina la prossima istanza valida. # if ["$1" = "-n"]; poi. caso "$REQ" in. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $PLACE.1.1.0*) RET=$PLACE.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $PLACE.2.2.0*) RET=$PLACE.2.2.1.0;; $PLACE.2.2.1*) RET=$PLACE.2.2.2.0;; $PLACE.2.2.2*) RET=$PLACE.2.2.3.0;; $PLACE.2.2.3*) RET=$PLACE.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $PLACE.3.2.0*) RET=$PLACE.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $PLACE.3.2.3*) RET=$PLACE.3.2.4.0;; $PLACE.3.2.4*) RET=$PLACE.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $PLACE.4.2.0*) RET=$PLACE.4.2.1.0;; $PLACE.4.2.1*) RET=$PLACE.4.2.2.0;; $PLACE.4.2.2*) RET=$PLACE.4.2.3.0;; $PLACE.4.2.3*) RET=$PLACE.4.2.4.0;; $PLACE.4.2.*| \ $PLACE.5*| \ $PLACE.6*| \ $PLACE.7.0*| \ $PLACE.7.1*| \ $PLACE.7.2.0*| \ $PLACE.7.2.1*| \ $PLACE.7.2.2*) RET=$PLACE.7.2.3.0;; $PLACE.7.2.3*) RET=$PLACE.7.2.4.0;; $PLACE.7*| \ $PLACE.8.0*) RET=$PLACE.8.1.0;; *) uscita 0;; esac. altro. # # Richieste GET - verifica un'istanza valida. # caso "$REQ" in. $PLACE.1.1.1.0| \ $PLACE.2.2.1.0| \ $PLACE.2.2.2.0| \ $PLACE.2.2.3.0| \ $PLACE.2.2.4.0| \ $PLACE.3.2.1.0| \ $PLACE.3.2.4.0| \ $PLACE.3.2.5.0| \ $PLACE.4.2.1.0| \ $PLACE.4.2.2.0| \ $PLACE.4.2.3.0| \ $PLACE.4.2.4.0| \ $PLACE.7.2.3.0| \ $PLACE.7.2.4.0| \ $PLACE.8.1.0) RET=$REQ;; *) uscita 0;; esac. fi # # Richieste GET* "Processo" - restituisce il valore hardcoded. # echo "$RET" caso "$RET" in. $PLACE.1.1.1.0) echo "stringa"; apcaccess -u -p MODELLO; uscita 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; uscita 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; uscita 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); uscita 0;; $PLACE.2.2.4.0) echo "stringa"; apcaccess -u -p BATTDATE; uscita 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; uscita 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; uscita 0;; $PLACE.3.2.5.0) echo "stringa"; apcaccess -u -p LASTXFER; uscita 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; uscita 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; uscita 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; uscita 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; uscita 0;; $PLACE.7.2.3.0) echo "stringa"; apcaccess -u -p SELFTEST; uscita 0;; $PLACE.7.2.4.0) echo "stringa"; apcaccess -u -p SELFTEST; uscita 0;; $PLACE.8.1.0) echo "Gauge32"; eco 1; uscita 0;; *) echo "stringa"; eco "ack... $RET $REQ"; uscita 0;; # Non dovrebbe accadere. esac.

Se ti stai chiedendo degli OID, puoi trovarli QUI. Si noti che alcuni modelli di UPS non restituiscono tutti i parametri o nel formato sbagliato, quindi il codice potrebbe contenere imprecisioni e stub.

Ora sei pronto.

Come monitorare lo stato dell'UPS USB tramite SNMP

Per monitorare lo stato dell'UPS USB tramite SNMP, eseguire il comando seguente: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1. L'output sarà così:

SNMPv2-SMI:: enterprise.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750 "
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.1.0 = Gauge32: 100
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.3.0 = Timeticks: (432000) 1:12:00.00
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Autotest automatico o esplicito"
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.3.0 = STRING: "NO"
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.4.0 = STRING: "NO"
SNMPv2-SMI:: enterprise.318.1.1.1.8.1 = Gauge32: 1

Se configuri ulteriormente lo script di monitoraggio, puoi ottenere questi graziosi grafici:

Una perdita conferma che Windows 11 sarà il prossimo nome di rilascio di Windows

Una perdita conferma che Windows 11 sarà il prossimo nome di rilascio di Windows

Il noto insider Evan Blass ha infatti confermato sul suo Twitter che Microsoft svelerà un nuovo s...

Leggi di più

Come abilitare o disabilitare la fotocamera in Windows 10

Come abilitare o disabilitare la fotocamera in Windows 10

CONSIGLIATO: Fare clic qui per risolvere i problemi di Windows e ottimizzare le prestazioni del s...

Leggi di più

Scarica nuove icone da Windows 10 build 21343

Scarica nuove icone da Windows 10 build 21343

CONSIGLIATO: Fare clic qui per risolvere i problemi di Windows e ottimizzare le prestazioni del s...

Leggi di più