Tonerstand von HP Laserjets mit SNMP auslesen

Hier im Geschäft haben wir insgesamt vier HP Laserdrucker. Inzwischen wissen die meisten wir man die Toner selber wechselt, aber für die Bestellung bin immer noch ich zu ständig. Meistens funktioniert es auch, dass die leeren Toner an mich zurück kommen. Denn so habe ich einen Überblick wieviele Toner wir noch haben. Allerdings ist es auch schon ab und zu passiert, dass die Toner (fast) ausgegangen sind, ohne dass ich es wusste. Eine Möglichkeit um dem entgegen zu wirken, ist die Überwachung des Tonerstandes und was liegt da näher als SNMP. Also mal einen snmpwalk auf den Drucker machen. Und siehe da, irgendwo versteckt sind die Daten zu Toner, Fixier- und Transporteinheit. Diese Daten sind von einem HP Color Laserjet 4650. Wie es bei anderen Druckern aussieht weiss ich nicht, aber bei den Laserjets siehts überall ähnlich aus.
root@serv02:~# snmpwalk -c public -v 2c 192.168.1.*
SNMPv2-SMI::mib-2.43.11.1.1.6.1.1 = STRING: "Black Print Cartridge HP C9720A"
SNMPv2-SMI::mib-2.43.11.1.1.6.1.2 = STRING: "Cyan Print Cartridge HP C9721A"
SNMPv2-SMI::mib-2.43.11.1.1.6.1.3 = STRING: "Magenta Print Cartridge HP C9723A"
SNMPv2-SMI::mib-2.43.11.1.1.6.1.4 = STRING: "Yellow Print Cartridge HP C9722A"
SNMPv2-SMI::mib-2.43.11.1.1.6.1.5 = STRING: "Image Transfer Kit HP Q3675A"
SNMPv2-SMI::mib-2.43.11.1.1.6.1.6 = STRING: "Image Fuser Kit HP 110V-Q3676A, 220V-Q3677A"
SNMPv2-SMI::mib-2.43.11.1.1.8.1.1 = INTEGER: 9000
SNMPv2-SMI::mib-2.43.11.1.1.8.1.2 = INTEGER: 8000
SNMPv2-SMI::mib-2.43.11.1.1.8.1.3 = INTEGER: 8000
SNMPv2-SMI::mib-2.43.11.1.1.8.1.4 = INTEGER: 8000
SNMPv2-SMI::mib-2.43.11.1.1.8.1.5 = INTEGER: 120000
SNMPv2-SMI::mib-2.43.11.1.1.8.1.6 = INTEGER: 150000
SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 5580
SNMPv2-SMI::mib-2.43.11.1.1.9.1.2 = INTEGER: 5200
SNMPv2-SMI::mib-2.43.11.1.1.9.1.3 = INTEGER: 6480
SNMPv2-SMI::mib-2.43.11.1.1.9.1.4 = INTEGER: 1520
SNMPv2-SMI::mib-2.43.11.1.1.9.1.5 = INTEGER: 38727
SNMPv2-SMI::mib-2.43.11.1.1.9.1.6 = INTEGER: 111571

Aber das bringt ja noch nicht allzu viel. Was kann man denn mit diesen Daten anfangen?
Nun mal zum schwarzen Toner. Hier haben wir die folgenden Daten.
SNMPv2-SMI::mib-2.43.11.1.1.6.1.1 = STRING: "Black Print Cartridge HP C9720A"
SNMPv2-SMI::mib-2.43.11.1.1.8.1.1 = INTEGER: 9000
SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 5580

Die erste Zeilt zeigt, wie unschwer zu erkennen ist, den Namen des Toners an. So kommt man auch relativ schnell drauf, was es ist. Die nächste Zeile zeigt den maximalen Wert des Toners an, welche Einheit das ist, weiss ich nicht, aber das ist hier auch nicht so wichtig. Die letzte Zeile zeigt dann noch den aktuellen Stand des Toners an. Mit diesen Daten ist es nun keine Hexerei aus zurechnen wie voll der Toner noch ist.
100 * 5580 / 9000 = 62

Die Daten noch schnell mit dem Webinterface vergleichen und siehe da: Es stimmt.

Nun kann man das ganze auch noch ein wenig Automatisieren. Ich habe dazu ein kleines Script geschrieben, welches den aktuellen Stand der Toner und Einheiten anzeigt.
#!/bin/bash

# CONFIG
ip="192.168.1.*"
community="public"

num=1;
while [ ${num} -le 6 ]
do
    name=`snmpwalk -v 2c -c ${community} ${ip} SNMPv2-SMI::mib-2.43.11.1.1.6.1.${num} | cut -d "\"" -f 2`
    max=`snmpwalk -v 2c -c ${community} ${ip} SNMPv2-SMI::mib-2.43.11.1.1.8.1.${num} | cut -d " " -f 4`
    current=`snmpwalk -v 2c -c ${community} ${ip} SNMPv2-SMI::mib-2.43.11.1.1.9.1.${num} | cut -d " " -f 4`

    echo "${name} $((100 * $current /$max))%"

    ((num++))
done

Dieses Script gibt nun das folgende aus:
Black Print Cartridge HP C9720A 62%
Cyan Print Cartridge HP C9721A 65%
Magenta Print Cartridge HP C9723A 81%
Yellow Print Cartridge HP C9722A 19%
Image Transfer Kit HP Q3675A 32%
Image Fuser Kit HP 110V-Q3676A, 220V-Q3677A 74%

Und wenn man das mit dem Webinterface vergleicht:
http://images.t-error.ch/news/363/toner_lj4650.jpg

Nur so als Shellscript, macht das natürlich wenig sinn, man könnte ja gleich auf das Webinterface. Wenn man die Daten aber ins RRDTool speist, oder sonst irgendwie zusammenfasst, kann man sich so einen schönen Überblick über den Tonerstand der Drucker verschaffen. Wenn ich Zeit habe, baue ich vielleicht mal so ein Tool mit PHP.

Kommentare

wal 08.02.08 09:34
Gravatar von wal Hi,

super vielen Dank!

Aber eine Frage, klappt dies auch bei Scannen und Kopieren an den Multifunktionsgeräten von HP? Und wenn ja wie. Ich habe per SNMPWALK die MIB ausgelesen, leider aber keinen Eintrag gefunden die auf wieviel Seiten A3/A4 oder gescannt wurden etc. sich bezieht.

Kann man dies auch auslesen/berechnen?

Vielen Dank schon mal vorab.

Viele Grüße
wal
david 09.02.08 22:12
Gravatar von david Hallo Wal
Eine konkrete Lösung kann ich dir leider nicht liefern, da ich kein Multifunktionsgerät von HP habe. Aber wenn du in der MIB keinen Eintrag dazu findest, dürfte es schwierig werden. Hast du denn im Webinterface eine Eintrag dazu?
CK 09.06.08 15:29
Gravatar von CK Hallo,

Ich möchte gerne einen HP Laserjet P1505N auf Toner überwachen, zieht dein Script da auch? Und wie sende ich einen SNMPWALK unter Windows und wie bekomme ich die aktuellen MIBs raus?
Phil Pl... 11.08.11 08:26
Gravatar von Phil Pl... Hallo David

Ich hätte eine kleine Frage an dich zu diesem Artikel. Ich kann von einem HP Drucker mit deiner snmpwalk-Methode zwar alle Werte abfragen. (Muss nicht mal mehr rechnen, der spuckt mir den Tonerstand gleich als Int-Wert zurück bei meinem 3015 Modell)

Soweit so gut. Ich will das ganze an einen Hobbit Monitoring Server senden, benötige aber soweit ich weiss die OID. Gibt es hier eine Möglichkeit die MIB - Form in die OID Form zu bringen? Im Netz findet man (oder ich) nur sehr spärliche Infos hierzu.

P.S - Der Artikel hat echt Potenzial. Mein Ziel ist es eine Alarmierung im Hobbit auszulösen bei einem TOnerstand von z.b <10 %.....

(Andere Werte wie SysUpTime etc kommen schon prima an beim Hobbit - Nur...wen interessieren die....)
Phil Pl... 11.08.11 10:18
Gravatar von Phil Pl... ah, bin gerade selber darübergestossen - das teil nennt sich snmptranslate.

also gehe ich weiter üben... :)
david 11.08.11 10:21
Gravatar von david Oh, sehr gut. Dann noch viel Spass beim weiter üben.
Ich habe etwas in der Art mit Nagios und dem Alerting am laufen und das funktioniert bestens.

Kommentieren

Name:
Mail:
Homepage:
3+9=? (Spamschutz)