Zählerstands OiD vom Drucker auslesen
Ich würde gerne ein kleines Tool schreiben, indem ich eine IP von einem Netzwerkdrucker angebe und die Zählerstände erhalte.
Moin,
ersteinmal Hallo.
Ich bin neu hier und gerade dabei, mich ein bisschen in PowerShell und allgemeines skripten reinzufuchsen.
Daher würde ich gerne ein Tool schreiben, indem ich eine IP eines Netzwerkdruckers (Ricoh MP C5501) eingebe
und dann die Zählerstände ausgegeben bekomme.
Da ich aber kaum Ahnung von SNMP, MiF und OiD´s habe, wollte ich fragen ob mir jemand von euch da helfen kann, oder vielleicht selbst so etwas bereits gebaut hat?
die OiD´s habe ich schon herausgefunden:
[1.3.6.1.4.1.367.3.2.1.2.19.1.0] = Gesamt
[1.3.6.1.4.1.367.3.2.1.2.19.2.0] = Druck
[1.3.6.1.4.1.367.3.2.1.2.19.3.0] = Fax
[1.3.6.1.4.1.367.3.2.1.2.19.4.0] = Kopie
Ob s/w oder Farbe habe ich ersteinmal außen vor gelassen.
Mir wurde von einem Kollegen erzählt das ich dies auch mit PowerShell realisieren kann, scheitere da aber kläglich.
Habt ihr eine Möglichkeit es über PowerShell oder ähnliches auszugeben?
Vielen Dank
Gruß
Dominik
Moin,
ersteinmal Hallo.
Ich bin neu hier und gerade dabei, mich ein bisschen in PowerShell und allgemeines skripten reinzufuchsen.
Daher würde ich gerne ein Tool schreiben, indem ich eine IP eines Netzwerkdruckers (Ricoh MP C5501) eingebe
und dann die Zählerstände ausgegeben bekomme.
Da ich aber kaum Ahnung von SNMP, MiF und OiD´s habe, wollte ich fragen ob mir jemand von euch da helfen kann, oder vielleicht selbst so etwas bereits gebaut hat?
die OiD´s habe ich schon herausgefunden:
[1.3.6.1.4.1.367.3.2.1.2.19.1.0] = Gesamt
[1.3.6.1.4.1.367.3.2.1.2.19.2.0] = Druck
[1.3.6.1.4.1.367.3.2.1.2.19.3.0] = Fax
[1.3.6.1.4.1.367.3.2.1.2.19.4.0] = Kopie
Ob s/w oder Farbe habe ich ersteinmal außen vor gelassen.
Mir wurde von einem Kollegen erzählt das ich dies auch mit PowerShell realisieren kann, scheitere da aber kläglich.
Habt ihr eine Möglichkeit es über PowerShell oder ähnliches auszugeben?
Vielen Dank
Gruß
Dominik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 192481
Url: https://administrator.de/forum/zaehlerstands-oid-vom-drucker-auslesen-192481.html
Ausgedruckt am: 15.07.2025 um 10:07 Uhr
32 Kommentare
Neuester Kommentar
Vergiss es... das ist bei uns ein kostenpflichtes Addon:
powershellinside.com/powershell/netcmdlets/download.aspx
Grüße,
Dani
powershellinside.com/powershell/netcmdlets/download.aspx
Grüße,
Dani
Doch, lad dir net-snmp runter:
net-snmp.org/
mit den dortigen Shell Kommandos wie "snmpget" sollte das dann mit der Batch (und ggf. "bastla's" Hilfe
) kein Thema sein.
net-snmp.org/
mit den dortigen Shell Kommandos wie "snmpget" sollte das dann mit der Batch (und ggf. "bastla's" Hilfe
Kannst dir auch mal den MiB Browser von iReasoning anschaun (ireasoning.com/mibbrowser.shtml). Ist recht mächtig und sollte dir für den Anfang, solang du es nicht automatisieren willst, in der kostenlosen Version reichen.
Grüße,
Philip
Grüße,
Philip
get-snmp IP OID>>C:\das\ist\der\Datei\Pfad.txt
Wie genau dein Auslesebefehl heisst ist in dem Fall egal. Gespeichert wird die Ausgabe des Befehls.
Welche Ausgabe bekommst du wenn du "get-snmp 10.144.83.186 .1.3.6.1.4.1.367.3.2.1.2.19.1.0" ohne ">>C:\usr\ZS.txt" ausführst?
Und für was steht get-snmp in deinem Fall? Ein PowerShell Cmdlet? Eine Exe? Falls Exe ist die Frage ob der Ffad zu ihr in den Umgebungsvariablen eingetragen ist. Wenn ja brauchst keinen Pfad, wenn nein musst den Pfad angeben. Das ändert sich natürlich wenn du die Batchdatei im Ordnerkontext der Exe ausführst.
Und für was steht get-snmp in deinem Fall? Ein PowerShell Cmdlet? Eine Exe? Falls Exe ist die Frage ob der Ffad zu ihr in den Umgebungsvariablen eingetragen ist. Wenn ja brauchst keinen Pfad, wenn nein musst den Pfad angeben. Das ändert sich natürlich wenn du die Batchdatei im Ordnerkontext der Exe ausführst.

Moin,
Du scheinst dir den Tipp von Aqui und den einen von psannz angeschaut zu haben, aber für die Man page scheints nicht gereicht zu haben?
Ps: vor den beiden ">" ist ein Zeichen zuviel....
Gruß
- hüstel....
Mein Quell Code sieht bis jetzt so aus:
get-snmp 10.144.83.186 .1.3.6.1.4.1.367.3.2.1.2.19.1.0 >>C:\usr\ZS.txt
get-snmp 10.144.83.186 .1.3.6.1.4.1.367.3.2.1.2.19.1.0 >>C:\usr\ZS.txt
Du scheinst dir den Tipp von Aqui und den einen von psannz angeschaut zu haben, aber für die Man page scheints nicht gereicht zu haben?
- Wo ist die Version?
- Wo ist die Community?
Ps: vor den beiden ">" ist ein Zeichen zuviel....
Gruß
Zitat von @60730:
[...]
Ps: vor den beiden ">" ist ein Zeichen zuviel....
[...]
Ps: vor den beiden ">" ist ein Zeichen zuviel....
nur wenn er die Datei jedes Mal überschreiben will. Wenn ihm seine alten Werte in der selben Datei wichtig sind ist >> das Mittel der Wahl.
@Onkelz05: Wer lesen kann ist klar im Vorteil. Wie @Dani weiter oben bereits schrieb ist get-snmp ein kostenpflichtiges Powershell Cmdlet. Das wirst du also nicht haben.
Ich habe es in beispielhafter und reduzierter Form verwendet um es einigermaßen klar zu halten. Deine letzte Frage war ja wie du die Ausgabe in eine Textdatei bekommst. Sorry, aber da hatte ich angenommen dass dein Code an sich schon geht und du einfach nicht den vollen Befehl abgetippt hast.
Dann also nochmal von vorn...
Du hast Net-SNMP runtergeladen und installiert? Prima. Im Unterverzeichnis .\bin\ findest du die snmpget.exe.
Die brauchst du.
Wie sie gern angesprochen wird erfährst du indem du eine Kommandzeile öffnest, und idF. "C:\usr\bin\snmpget.exe -h" aufrufst. -? geht auch, da kommt dann die Hilfe und ner kleinen Meldung dass -h für die Hilfe steht.
Das mal so als Anhaltspunkt.
Was du wirklich tun solltest: Dir die schöne Datei Net-SNMP.chm im Unterverzeichnis .\docs\ anschaun. Und durchlesen. Das ist nämlich das Handbuch. Wenn du damit durch bist und dann noch Fragen hast steh ich dir gern wieder zur Verfügung.
Grüße,
Philip
Sodala, das sieht doch schon mal recht nett aus.
Seitenstände usw gibt es aber auch im allgemeinen Bereich, also nicht nur über die Enterprise-OIDs.
Schau dir dazu doch mal folgende OIDs an:
.1.3.6.1.2.1.43.10
.1.3.6.1.2.1.43.11
.1.3.6.1.2.1.43.12
bzw. .1.3.6.1.2.1.43. allgemein
Damit klappt es für alle SNMP-fähigen Drucker, ungeachtet des Herstellers.
Dann könntest du z.B. noch ein %date%>>C:\usr\Zähler.txt an den Anfang setzen, dann hast du auch noch das passende Datum in der Datei.
Seitenstände usw gibt es aber auch im allgemeinen Bereich, also nicht nur über die Enterprise-OIDs.
Schau dir dazu doch mal folgende OIDs an:
.1.3.6.1.2.1.43.10
.1.3.6.1.2.1.43.11
.1.3.6.1.2.1.43.12
bzw. .1.3.6.1.2.1.43. allgemein
Damit klappt es für alle SNMP-fähigen Drucker, ungeachtet des Herstellers.
Dann könntest du z.B. noch ein %date%>>C:\usr\Zähler.txt an den Anfang setzen, dann hast du auch noch das passende Datum in der Datei.

moin,
[OT]
Was dann "stimmen" würde, wenn ich "von" geschrieben hätte
Ich meinte aber das Zeichen nach der 0 und vor dem ersten >
Aber habt Ihr ja schon ohne mich rausgefunden
[/OT]
Ps:
Statt der Baustelle
würde ein simples
"auch" reichen
Gruß
[OT]
Zitat von @psannz:
nur wenn er die Datei jedes Mal überschreiben will. Wenn ihm seine alten Werte in der selben Datei wichtig sind ist >> das Mittel der Wahl.
Zitat von @60730:
[...]
Ps: vor den beiden ">" ist ein Zeichen zuviel....
[...]
Ps: vor den beiden ">" ist ein Zeichen zuviel....
nur wenn er die Datei jedes Mal überschreiben will. Wenn ihm seine alten Werte in der selben Datei wichtig sind ist >> das Mittel der Wahl.
Was dann "stimmen" würde, wenn ich "von" geschrieben hätte
Ich meinte aber das Zeichen nach der 0 und vor dem ersten >
Aber habt Ihr ja schon ohne mich rausgefunden
[/OT]
Ps:
Statt der Baustelle
cd ..
cd ..
cd ..
cd ..
C:
cd usr\bin
cd /d c:\usr\bin
Gruß

moin again...
zwdrei bitten - editiere deinen letzten Beitrag und fuege vor die Batch <code> und nach der Batch </code> rein.
Und dann ich persoenlich mag keine zähler.txt, denn da kommt dann eher eine zöhler oder was anderes raus.
Last but not least:
Sind die 2591 jetzt die Anzahl der Seiten oder nicht?
Dann schau ich auch gerne nochmal rein und geb dir detailiertere Infos, statt nur klugzu.....
Gruß
Ps: Die Idee mit der Variablen ist gut, besser waere es aber vorher zumindestens mal via:
Und dann ich persoenlich mag keine zähler.txt, denn da kommt dann eher eine zöhler oder was anderes raus.
Last but not least:
Sind die 2591 jetzt die Anzahl der Seiten oder nicht?
Dann schau ich auch gerne nochmal rein und geb dir detailiertere Infos, statt nur klugzu.....
Gruß
Ps: Die Idee mit der Variablen ist gut, besser waere es aber vorher zumindestens mal via:
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar
vor der ganzen Baustelle durchzufuehren.
cd /d c:\usr\bin
:para
set /p IpAdresse=IP-Adresse eingeben:
:check
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit
:Systemname
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.2.1.1.5.0') do echo Systemname;%%b>>C:\usr\Zaehler.txt
:Seriennummer
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.1.4.0') do echo Seriennummer;%%b>>C:\usr\Zaehler.txt
:Gesamtvolumen
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.1.0') do echo Zähler Gesamtvolumen;%%b>>C:\usr\Zaehler.txt
:Druck
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.2.0') do echo Zähler Druck;%%b>>C:\usr\Zaehler.txt
:Fax
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.3.0') do echo Zähler Fax;%%b>>C:\usr\Zaehler.txt
:Kopie
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.4.0') do echo Zähler Kopie;%%b>>C:\usr\Zaehler.txt
PAUSE
Nachtrag:
Habe auch schon überlegt, ob man ne Tabelle einfügt aus der ne Reihe von Systemen ausgelesen wird.
nix leichter, als das...Statt
set /p IpAdresse=IP-Adresse eingeben:
machst du:if "%1"="" set /p IpAdresse=IP-Adresse eingeben:
if not "%1"="" set IpAdresse=%1
if not "%1"="" set IpAdresse=%1
und das ganze startest du dann mit einer weiteren Schleife
for /f %%a in (laufwerk:\pfad\datei.suffix) do call pfad_und_name_der_batch %%a
Gruß

MOin,
Probiers doch mal aus
(ich geb dir nen Tipp)
jein - das würde bedeuten, du hast 3 Dateien
Gruß
Weil ansonsten würde er doch testen, ob er Sie anpingen kann, aber bisher noch keinen Befehl
was er tun soll wenn er sie anpingen konnte oder hab ich da was übersehen?Probiers doch mal aus
&& echo %IpAdresse% ist erreichbar
Bedeutet das, dass die neue Schleife in eine neue Batch geschrieben wird und sofern er die Tabelle/Liste
mit den IP Adressen findet diese in die "alte" importiert?jein - das würde bedeuten, du hast 3 Dateien
- diese da oben
- den einzeiler
- eine Steuerdatei
Gruß

Salve,
ich hab mal etwas aufgeräumt und eingedampft.
Bei mir lauetet der Pfad C:\script\snmp\ - entweder anpassen oder ändern.
und das braucht eine "uid.ini" in der steht dann:
und selbstverfreilich eine systeme.ini
da malst du einfach pro Zeile eine IP rein.
Gruß
ich hab mal etwas aufgeräumt und eingedampft.
Bei mir lauetet der Pfad C:\script\snmp\ - entweder anpassen oder ändern.
Rem hier stand ein bisschen viel code, der in meinem hirn entwixkelt wurde und im webbrowser komponiert wurde.
Echo weiter gehts unten...
:end
und das braucht eine "uid.ini" in der steht dann:
Systemname;1.3.6.1.2.1.1.5.0
Seriennummer;1.3.6.1.4.1.367.3.2.1.2.1.4.0
Counter_Total;1.3.6.1.4.1.367.3.2.1.2.19.1.0
Counter_Print;1.3.6.1.4.1.367.3.2.1.2.19.2.0
Counter_Fax;1.3.6.1.4.1.367.3.2.1.2.19.3.0
Counter_Copy;1.3.6.1.4.1.367.3.2.1.2.19.4.0
und selbstverfreilich eine systeme.ini
da malst du einfach pro Zeile eine IP rein.
Gruß

Salve,
zum dritten (mein Fehler...)
Also kurzum - ich hab mich verrannt - entweder per parameter/oder set /p oder per systeme.ini
Alles zusammen krieg ich grad nicht hin (liegt daran, dass mich mein Kinderl mit Rüsselseuche angesteckt hat)
Gruß
Status "ungetestet"!!!
Ich hab die zwar getestet, aber hier nicht die getestete reingeschrieben, sondernon the fly.hier was geändert.
zum dritten (mein Fehler...)
Also kurzum - ich hab mich verrannt - entweder per parameter/oder set /p oder per systeme.ini
Alles zusammen krieg ich grad nicht hin (liegt daran, dass mich mein Kinderl mit Rüsselseuche angesteckt hat)
rem solange es nicht im Pfad steht -entweder in dem Ordner starten, oder den Pfad in die Systemvaraible setzen oder den Pfad vor die .exe schreiben.
cd /d C:\script\snmp\bin
:para
:systeme
rem hole dir in der systeme.ini Zeile für Zeile eine IP und ratter die durch die Prozedur :UID (und gebe Ihr die IP mit)
for /f %%a in (C:\script\snmp\systeme.ini) do call :uid %%a
rem fertig - alles andere sind unterprozeduren, die nur angetriggert werden
goto end
:error
rem im falle eines Fehlers
@echo %1 ist nicht erreichbar
rem damit man trotz exit auch was sieht
@ping -n 10 localhost>nul
exit
:uid
rem checke, ob die oben mitgegebene IP (%1) ereichbar ist, sage yupp oder gehe direkt ins Kittchen
@Ping %1| find "TTL">nul && echo %1 ist erreichbar || goto error
rem in der uid.ini stehen semikolongetrennt die Klartexte und deren UID
rem rufe pro IP (%1) jede zeile einmal auf (kommen dann in der Prozedur als %1 %2 %3 an!)
for /f "tokens=1,2 delims=;" %%a in (C:\script\snmp\uid.ini) do call :job %1 %%a %%b
goto end
:job
rem war doch immer genau der gleiche Aufruf, nur die klartexte und uid war anders, also eindampfen
rem achtung "tricky" es ist hybscher, wenn in der uid.ini zuerst der Klartext und dann die dazugehörige UID steht
rem aber der Aufruf muß "anders" herum sein, also %1 ist immer noch IP %2 ist der Klartext und %3 ist die UID
Rem %%b ist das, was nach dem leerzeichen und : (delims) bei der ausgabe herauskommt.
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %1 %3') do echo %2;%%b>>C:\script\snmp\Zaehler.txt
:end
Gruß
Status "ungetestet"!!!
Ich hab die zwar getestet, aber hier nicht die getestete reingeschrieben, sondernon the fly.hier was geändert.
Ich habe auch Tool für Druckerüberwachung gebraucht und am Schluss selbe in unsere Firma das Programm entwickelt.
Das Programm ist noch im Beta Version und kann für 3 Drucker gratis verwendet werden.
Hier Link zum herunterladen:
mazursoft.ch/truemonitor
Das Programm ist noch im Beta Version und kann für 3 Drucker gratis verwendet werden.
Hier Link zum herunterladen:
mazursoft.ch/truemonitor