doktore
Goto Top

Brother SNMP OID Toner

Hallo zusammen,

ich versuche krampfhaft seit ein paar Stunden herauszubekommen wir ich bei Brother Druckern verschiedener Modelle per SNMP den Tonerstatus (Füllstand) abzufragen für unser Monitoring.

hat da jemand eine Idee??


MfG

der Doktor

Content-Key: 208991

Url: https://administrator.de/contentid/208991

Printed on: April 19, 2024 at 09:04 o'clock

Mitglied: 110135
110135 Jul 02, 2013 updated at 14:50:34 (UTC)
Goto Top
Hallo,

ich nutze bei unseren Kunden einen Icinga / Nagios zum Überwachen.

Ich habe bei den Brother-Geräten folgende OIDs im Einsatz:

Seitenzahl: 1.3.6.1.2.1.43.10.2.1.4.1.1
Papier Fach1: 1.3.6.1.2.1.43.8.2.1.10.1.1
Papier Fach2: 1.3.6.1.2.1.43.8.2.1.10.1.2
Papier Fach3: 1.3.6.1.2.1.43.8.2.1.10.1.3
Verbrauchsmaterial: (ggf. mal einen SNMPWalk machen, je nach Druckertyp - Farb oder S/W kann das abweichen):
- Stand: 1.3.6.1.2.1.43.11.1.1.9.1.ID
- Voll: 1.3.6.1.2.1.43.11.1.1.8.1.ID
- Name: 1.3.6.1.2.1.43.11.1.1.6.1.ID
(wobei ID für einen Unterpunkt steht! - SNMPWalk nutzen! Toner Gelb könnte z.B: ID 3 haben. Dies bei allen drei o.g. Abfragen einsetzen.)
Den aktuellen Füllstand kannst du errechnen: Füllstand = Stand * 100 / Voll


Ich hoffe ich konnte dir helfen,

Gruß,
Florian
Member: Doktore
Doktore Jul 02, 2013 at 14:57:30 (UTC)
Goto Top
Hallo Florian,

danke für die schnelle Antwort

ich bekomme dann immer werte von -3 oder -2 zurück. Soweit bin ich schon gewesen! Aber was bedeuten die werte?
Mitglied: 110135
110135 Jul 02, 2013 at 14:59:33 (UTC)
Goto Top
Hallo,

wie lautet denn deine Abfrage genau?

Mach doch mal nen SNMPGET drauf. Stimmt die Community? Bzw. Ist SNMP auf den Druckern freigeschaltet?
Member: MrNetman
MrNetman Jul 02, 2013 at 15:26:12 (UTC)
Goto Top
ich bekomme dann immer werte von -3 oder -2 zurück. Soweit bin ich schon gewesen! Aber was bedeuten die werte?
Ich denke, dass du das über die Weboberfläche heraus finden kanst. z. B Füllstand -1, -2/4, -3/4, -4/4=leer

Gruß
Netman
Member: Doktore
Doktore Jul 03, 2013 updated at 06:51:45 (UTC)
Goto Top
es ist auf jeden Fall die Toner Cartridge die den Wert -3 zurückgibt. Es wäre nur wirklich toll wenn man wüsste was -3 bedeutet.
Leider gibt die Webseite auch keine Auskunft! Dort sieht man nur den Füllstand anhand eines schwarzen Balkens ohne Angabe eines Wertes.

UPDATE

Also alle Informationen die ich sammeln konnte bringen mich zu dem Entschluss das ich wohl per SNMP das Display auslesen muss um die
Fehlermeldungen zu interpretieren face-sad


ich raufe mir die Haare

MfG

der Dr.
Mitglied: 110135
110135 Jul 03, 2013 updated at 07:18:37 (UTC)
Goto Top
Hallo,

so, wenn ich jetzt folgendes in der Testumgebung bei mir mache:

Name des Toners:
root@nagios:~# snmpget -v1 -c public 192.168.120.31 1.3.6.1.2.1.43.11.1.1.6.1.1 
Antwort: SNMPv2-SMI::mib-2.43.11.1.1.6.1.1 = STRING: "Black Toner Cartridge"  

Zustand, wenn voll:
root@nagios:~# snmpget -v1 -c public 192.168.120.31 1.3.6.1.2.1.43.11.1.1.8.1.1
Antwort: SNMPv2-SMI::mib-2.43.11.1.1.8.1.1 = INTEGER: -2

Aktueller Stand:
root@nagios:~# snmpget -v1 -c public 192.168.120.31 1.3.6.1.2.1.43.11.1.1.9.1.1
Antwort: SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: -3

Rechne ich nun folgendes:

Füllstand = Stand * 100 / Voll
Füllstand = -2 * 100 / -3
Füllstand = -200 / -3
Füllstand = 66,67

Sprich: Der Toner wird in 3er Schritten abgefragt. Nun musst du nur noch Schwellenwerte einbauen. D.h. alles über 40% ist ok. 10 - 40 % = Warning, weniger als 10% = error.

Gruß,
Florian
Member: SKIP250
SKIP250 Mar 24, 2015 at 08:51:15 (UTC)
Goto Top
Hallo flow.ryan,

hatte bis gerade das gleiche Problem wie du.
Muss ganz ehrlich sagen, die HP Drucker die wir haben, sind einfacher abzufragen.

Da wir die Brother Geräte jedoch in so gut wie jedem Büro stehen haben, musste ich mich darum kümmern.

Dabei habe ich für mein Script (Auszug siehe unten) nicht nur die OID für ColorantMaxValue und CurrentValue genommen, sondern mich nach einigen Tests auch auf den "DisplayString" konzentriert.


function check_toner() {

MAXLEVEL=$(snmpget -Ovq -v1 -c $COMMUNITY $HOSTNAME .1.3.6.1.2.1.43.11.1.1.8.1.2 2>/dev/null)
CURRLEVEL=$(snmpget -Ovq -v1 -c $COMMUNITY $HOSTNAME .1.3.6.1.2.1.43.11.1.1.9.1.2 2>/dev/null)
ALERTDESCR=$(snmpget -Ovq -v1 -c $COMMUNITY $HOSTNAME .1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.2.0 2>/dev/null)

EXIT_STRING="UNKNOWN - could not get values for toner level. \n"
EXIT_CODE=3
elif [ $MAXLEVEL -eq $CURRLEVEL ]; then
EXIT_STRING="OK - toner full. \n"
EXIT_CODE=0
elif [[ $CURRLEVEL -eq -3 ]] && [[ ! $ALERTDESCR =~ "WENIG TONER" ]]; then
EXIT_STRING="OK - toner not low. \n"
EXIT_CODE=0
elif [[ $ALERTDESCR =~ "WENIG TONER" ]]; then
EXIT_STRING="WARNING - toner low. \n"
EXIT_CODE=1
elif [[ $ALERTDESCR =~ "TONER ERSETZEN" ]]; then
EXIT_STRING="CRITICAL - toner empty! \n"
EXIT_CODE=2
else
EXIT_STRING="UNKNOWN - please check script. \n"
EXIT_CODE=3
fi

printf "$EXIT_STRING"
exit $EXIT_CODE

}

Mein Code orientiert sich stark an den standard Nagios Scripten. Im besonderen an "check_snmp_printer".
Dafür also auch ein fettes Dankeschön an den Ursprünglichen Ersteller!
Member: SKIP250
SKIP250 Mar 24, 2015 at 13:28:48 (UTC)
Goto Top
EDIT:

Die Prüfung unter Hinzunahme der "ColorantMaxValue" und "ColorantCurrentValue" (eigentlich "Marker" anstatt "Colorant") für zu einem Problem:
So hat nach kruzer Zeit einer der 25 brother HL-5350DN Drucker einen Rückgabewert von "UNKNOWN - ..." geworfen.

Kurz gesucht: der Wert für MarkerCurrentValue lag bei 0.
Das obwohl das Webinterface und auch der Ausdruck zu den Verbrauchsinformationen einen Tonerstand > 50% anzeigten.

Entsprechnd habe ich das Script abgeändert und arbeite nun nurnoch mit dem DisplayString.
Zwar hat es sich gezeigt, dass der Weg von "TONER NIEDRIG" zu "TONER ERSETZEN" recht kurz ist, jedoch die einzige Möglichkeit ist effektiv die Drucker über SNMP abzufragen.

function check_toner() {

ALERTDESCR=$(snmpget -Ovq -v1 -c $COMMUNITY $HOSTNAME .1.3.6.1.4.1.2435.2.3.9.4.2.1.5.4.5.2.0 2>/dev/null)

if [ -z $ALERTDESCR ]; then
EXIT_STRING="UNKNOWN - could not get values for toner level. \n"
EXIT_CODE=3
elif [[ ! $ALERTDESCR =~ "WENIG TONER" ]] && [[ ! $ALERTDESCR =~ "TONER ERSETZEN" ]]; then
EXIT_STRING="OK - toner level is ok. \n"
EXIT_CODE=0
elif [[ $ALERTDESCR =~ "WENIG TONER" ]]; then
EXIT_STRING="WARNING - toner low. \n"
EXIT_CODE=1
elif [[ $ALERTDESCR =~ "TONER ERSETZEN" ]]; then
EXIT_STRING="CRITICAL - toner empty! \n"
EXIT_CODE=2
else
EXIT_STRING="UNKNOWN - please check script. \n"
EXIT_CODE=3
fi

printf "$EXIT_STRING"
exit $EXIT_CODE

}