Monitoring: Was macht ihr Netzwerk-Drucker ?

Monitoring: Was macht ihr Netzwerk-Drucker ?

Die Problematik

Ein Netzwerk-Drucker ist praktisch, nicht war ?
Dieser kann in ihrem Büro angeschlossen sein, in irgend einem anderen Lokal im Gebäude, irgendwo in der Stadt, … oder gar auf einem anderen Kontinent !
Wie kann man feststellen ob er funktionbereit ist, ob er genügend Papier beinhaltet, ob die Tinte ausreicht oder ob er keine Fehlfunktion aufweist ?
Es wäre sicher besser er sei erreichbar, aber das kann er nicht für jedermann sein.
“Hallo, wir möchten ein Mailing von 1500 Verträge von ca. 20 Seiten ausdrucken und es bleiben nur noch etwa 6000 Seiten in seinen Magazinen. Könnt ihr vor 19 Uhr nachladen ?”
klingt doch besser als :
“Hallo, wir hatten gestern Abend einen Druckvorgang von 1500 Verträge mit jeweils 20 Seiten, aber es gab ein Papiermangel. Könnt ihr von diesem nachladen, wir müssen auf neu anfangen.!”

Die Lösung

Die meisten Drucker können mit dem SNMP Protokol angesprochen werden. Dazu werden alle Infos die sie mitteilen können in einer MIB-Datenbank gespeichert, deren Inhalt über OID-Adressen vom Typ “1.3.6.1.2.1.2.2.1.6” baumartig aufgebaut ist. Beim ansprechen dieser Adresse gelingt man an deren Inhalt, und weiterhin an den Inhalt deren Tochter-Abzweigungen, je nach Art der Befragung.

Die Durchführung

Der Baum (oder die MIB-Adressen) ist nicht so ganz standartmäßig aufgebaut, schon deshalb weil nicht jeder Drucker die gleichen Funktionen besitzt.

Man muss also zunächst das Buch auffinden in dem die OID-Adressen für jenen bestimmten Drucker geschildert werden :

  1. Manche Hersteller bieten dies auf ihrer Installation-CD neben den notwendigen Treibern. Aber meistens ist dies nur für industrielle Modelle gängig.
  2. Es gibt kleine Softwaren die direkt den Drucker ansprechen und dessen OID-Baum aufzeichnen können zu einer Liste, Tabelle, mit deren Beschreibung und Inhalt.
  3. Unter Linux gibt es Befehle die dies bewerkstelligen. Danach muss man die Ergebnisse noch filtern und formatieren, was manche Lernseiten im Internet vorschlagen.
    Zum Teil jetzt auch diese !

Linux-Befehle

Der Befehl “snmpwalk” ermöglicht es den MIB-Baum zu durchgehen. Man installiert ihn unter Fedora (und wahrscheinlich unter allen RPM-Distributionen) mit dem Paket “net-snmp-utils”.

Beispiel (IP-Adresse des Druckers : 192.168.0.146)

Das Ergebnis ist eine recht beeindruckende Shrittrolle von Zeilen die man nun analysieren muß. Mit einer Ergänzung des Befehls kann man das Ergebniss in einer Text-Datei (*.txt) speichern und es mit einem Text-Editor(z.B.: gedit oder kate) nach Suchbegriffe durchforschen.

In meinem Fall enthällt die Datei folgendes

Daten Formatierung : die Analyse

Beim durchgehen der Zeilen fällt einem schnell auf das sie auf folgender weise aufgebaut sind :

Feldbezeichnung = Format : Inhalt.

Beispiel:

  • hrSystemUptime.0 = Timeticks: (282364664) 32 days, 16:20:46.64
    Diese Zeile verrät das der Drucker seit 32 Tagen, 16 Stunden, 20 Minuten und 46,64 secondes durchgehen läuft.
  • Folgende Zeilen geben Erkenntniss über die Füllrate der Tintepatronen :
    mib-2.43.11.1.1.9.1.1 = INTEGER: 97
    mib-2.43.11.1.1.9.1.2 = INTEGER: 70
    mib-2.43.11.1.1.9.1.3 = INTEGER: 82
    mib-2.43.11.1.1.9.1.4 = INTEGER: 77

Also, wenn man nun bei jeder Zeile die Feldbezeichnung und dessen Inhalt in einer Hash-Tabelle speichert, kann man diese durch einen einfachen, aber universalen Befehl abfragen, und das für jeden beliebigen Bedarf.
Um dies zu erreichen kann man natürlich von dieser Text-Datei ausgehen, aber weil Perl SNMP-Module besitzt braucht man sich dazu keinen Zwang anlegen.
In dem man die Optionen des Befehls ändert kommt man zu brauchbarere Ergebnisse:

Der Inhalt wirkt leicht verschieden :

  • Die Zeilen von 620 bis 623 weisen auf die OID-Adressen der Farben der Tintepatronen :
    SNMPv2-SMI::mib-2.43.11.1.1.6.1.1 = STRING: “R..servoir noir”
    SNMPv2-SMI::mib-2.43.11.1.1.6.1.2 = STRING: “R..servoir jaune”
    SNMPv2-SMI::mib-2.43.11.1.1.6.1.3 = STRING: “R..servoir cyan”
    SNMPv2-SMI::mib-2.43.11.1.1.6.1.4 = STRING: “R..servoir magenta”
  • Daraus kann man schließen das die Zeilen von 632 bis 635 auf deren Füllrate aufweisen :
    SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 97
    SNMPv2-SMI::mib-2.43.11.1.1.9.1.2 = INTEGER: 70
    SNMPv2-SMI::mib-2.43.11.1.1.9.1.3 = INTEGER: 82
    SNMPv2-SMI::mib-2.43.11.1.1.9.1.4 = INTEGER: 77

Skript : die Bash-Version

Es gibt immer mehrere möglichkeiten ein Programm aufzubauen. Es hängt vor allem von den Entscheidungen des Programmierers ab. Soll es sehr spezifisch oder etwas mehr universal und anpassbar sein, mit externen Objekten wie Dateien oder einer Datenbank ausgestückt sein ?

Und hier das Ergebniss im Terminal !

Jetzt ist es auch gut machbar Benachrichtigungen für einen Nagios-Monitor einzubauen.

Skript : die PERL Version

Dank eines Moduls wird der Drucker direkt angesprochen ohne daß das Ergebnis in einer Datei zwischen gespeichert werden muß. Die Ausführung gewinnt dadurch an Zeit, was in einer Umgebung mit einem Nagios-Monitor eine große Rolle spielt.

Darunter das Ergebniss angezeigt im Terminal-Fenster!

Zum Beachten : die Tinte hat zwischen den beiden Skript-Versionen etwas abgenommen …

Skript : Die Python-Version

Wie in der Perl-Version wird man hier ein zusätzliches Modul nutzen, und zwar PySNMP, das zuvor installiert werden muss. Es wird im Skript mit dem Befehl “import” gerufen.

Es verbleibt das Resultat noch lesbarer zu gestallten.I

Bookmark the permalink.

Comments are closed.