Windows Tips & News

Hvordan overvåke USB UPS-status via SNMP

ANBEFALT: Klikk her for å fikse Windows-problemer og optimalisere systemytelsen

Hvordan overvåke USB UPS-status via SNMP

Det er flere datamaskiner med USB-tilkoblet UPS. Alle datamaskinene bruker apcupsd-programmet. La oss si at du ønsker å samle informasjon om tilstanden til strømforsyningen for hver enhet på ett sted. Siden snmpd allerede kjører der, ville det være logisk å utvide funksjonaliteten.

Annonse

Løsningen nedenfor, med tillatelse fra Admins blogg, samler inn dataene fra alle snmpd-enheter samtidig.

For å overvåke USB UPS-status via SNMP, må vi først endre snmp-demonkonfigurasjonen.

Innholdgjemme seg
Forberedelser
Hvordan overvåke USB UPS-status via SNMP

Forberedelser

Legger til følgende til konfigurasjonen snmpd.conf.

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

Innholdet i /etc/snmp/apcupsd.sh-skriptet er som følger.

#!/bin/sh -f # Sjekk at apcupsd er online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Forespurt OID # # Behandle SET-forespørsler ved ganske enkelt å logge den tilordnede verdien. # Merk at slike "tildelinger" ikke er vedvarende, # heller ikke er syntaksen eller den forespurte verdien validert. # if [ "$1" = "-s" ]; deretter. echo $* >> /tmp/passtest.log. utgang 0. fi # # GETNEXT-forespørsler - finn neste gyldige forekomst. # if [ "$1" = "-n" ]; deretter. tilfellet "$REQ" i. $PLACE| \ $PLACE.0| \ $PLASS.0.*| \ $PLACE.1| \ $PLASS.1.1.0*) RET=$PLASS.1.1.1.0;; $PLASS.1*| \ $PLACE.2.0| \ $PLASS.2.0.*| \ $PLASS.2.1| \ $PLASS.2.2.0*) RET=$PLASS.2.2.1.0;; $PLASS.2.2.1*) RET=$PLASS.2.2.2.0;; $PLASS.2.2.2*) RET=$PLASS.2.2.3.0;; $PLASS.2.2.3*) RET=$PLASS.2.2.4.0;; $PLASS.2*| \ $PLACE.3.0*| \ $PLASS.3.1*| \ $PLASS.3.2.0*) RET=$PLASS.3.2.1.0;; $PLASS.3.2.1*| \ $PLASS.3.2.2*| \ $PLASS.3.2.3*) RET=$PLASS.3.2.4.0;; $PLASS.3.2.4*) RET=$PLASS.3.2.5.0;; $PLASS.3.2*| \ $PLASS.4.0*| \ $PLASS.4.1*| \ $PLASS.4.2.0*) RET=$PLASS.4.2.1.0;; $PLASS.4.2.1*) RET=$PLASS.4.2.2.0;; $PLASS.4.2.2*) RET=$PLASS.4.2.3.0;; $PLASS.4.2.3*) RET=$PLASS.4.2.4.0;; $PLASS.4.2.*| \ $PLASS.5*| \ $PLASS.6*| \ $PLACE.7.0*| \ $PLASS.7.1*| \ $PLACE.7.2.0*| \ $PLASS.7.2.1*| \ $PLASS.7.2.2*) RET=$PLASS.7.2.3.0;; $PLASS.7.2.3*) RET=$PLASS.7.2.4.0;; $PLASS.7*| \ $PLACE.8.0*) RET=$PLACE.8.1.0;; *) exit 0;; esac. ellers. # # GET-forespørsler - se etter gyldig forekomst. # tilfellet "$REQ" i. $PLASS.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| \ $PLASS.3.2.5.0| \ $PLACE.4.2.1.0| \ $PLACE.4.2.2.0| \ $PLASS.4.2.3.0| \ $PLACE.4.2.4.0| \ $PLASS.7.2.3.0| \ $PLASS.7.2.4.0| \ $PLACE.8.1.0) RET=$REQ;; *) exit 0;; esac. fi # # "Prosess" GET*-forespørsler - returner hardkodet verdi. # ekko "$RET" tilfelle "$RET" i. $PLACE.1.1.1.0) ekko "streng"; apcaccess -u -p MODELL; utgang 0;; $PLACE.2.2.1.0) ekko "Gauge32"; apcaccess -u -p BCHARGE; utgang 0;; $PLACE.2.2.2.0) ekko "Gauge32"; apcaccess -u -p ITEMP; utgang 0;; $PLACE.2.2.3.0) ekko "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); utgang 0;; $PLACE.2.2.4.0) ekko "streng"; apcaccess -u -p BATTDATE; utgang 0;; $PLACE.3.2.1.0) ekko "Gauge32"; apcaccess -u -p LINEV; utgang 0;; $PLACE.3.2.4.0) ekko "Gauge32"; apcaccess -u -p LINEFREQ; utgang 0;; $PLACE.3.2.5.0) ekko "streng"; apcaccess -u -p LASTXFER; utgang 0;; $PLACE.4.2.1.0) ekko "Gauge32"; apcaccess -u -p OUTPUTV; utgang 0;; $PLACE.4.2.2.0) ekko "Gauge32"; apcaccess -u -p LINEFREQ; utgang 0;; $PLACE.4.2.3.0) ekko "Gauge32"; apcaccess -u -p LOADPCT; utgang 0;; $PLACE.4.2.4.0) ekko "Gauge32"; apcaccess -u -p LOADPCT; utgang 0;; $PLACE.7.2.3.0) ekko "streng"; apcaccess -u -p SELVEST; utgang 0;; $PLACE.7.2.4.0) ekko "streng"; apcaccess -u -p SELVEST; utgang 0;; $PLACE.8.1.0) ekko "Gauge32"; ekko 1; utgang 0;; *) ekko "streng"; ekko "ack... $RET $REQ"; utgang 0;; # Bør ikke skje. esac.

Hvis du lurer på OID, kan du finne dem HER. Merk at noen UPS-modeller ikke returnerer alle parametere eller i feil format, så koden kan inneholde unøyaktigheter og stubber.

Nå er du klar.

Hvordan overvåke USB UPS-status via SNMP

For å overvåke USB UPS-status via SNMP, kjør følgende kommando: snmpwalk -v 1 -c offentlig 127.0.0.1 .1.3.6.1.4.1.318.1.1.1. Utgangen vil være slik:

SNMPv2-SMI:: enterprises.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750 "
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.1.0 = Måler32: 100
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.2.0 = Måler32: 36
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.3.0 = Tidsmerker: (432000) 1:12:00.00
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.1.0 = Måler32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.4.0 = Måler32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Automatisk eller eksplisitt selvtest"
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.1.0 = Måler32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.2.0 = Måler32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.3.0 = Måler32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.4.0 = Måler32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.3.0 = STRING: "NEI"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "NEI"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Måler32: 1

Hvis du konfigurerer overvåkingsskriptet ytterligere, kan du få disse smarte grafene:

OpplastingSpenningBatteritempKjøretid
ANBEFALT: Klikk her for å fikse Windows-problemer og optimalisere systemytelsen
Sergey Tkachenko, forfatter ved Winaero

Sergey Tkachenko, forfatter ved Winaero

Som du vet mangler lysbildefremvisningsfunksjonen på skrivebordet i Windows 7 Starter. Det er ing...

Les mer

Sergey Tkachenko, forfatter ved Winaero

Sergey Tkachenko, forfatter ved Winaero

Rainbows-temaet har fantastiske bakgrunnsbilder med ekte bilder av regnbuer. De er virkelig flott...

Les mer

Sergey Tkachenko, forfatter ved Winaero

Med Firefox 87 er Mozilla lager den neste personvernforbedringen til nettleseren. Fra nå av vil R...

Les mer