onkelz05
Goto Top

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

Content-Key: 192481

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

Printed on: April 26, 2024 at 06:04 o'clock

Member: Dani
Dani Oct 09, 2012 at 13:07:46 (UTC)
Goto Top
Moin,
schau dir den PowerShell Befehl "get-snmp" an. Damit solltest du problemlos an die Infos ran kommen.
Beispiele gibts bei Google zu genüge.


Grüße,
Dani
Member: Onkelz05
Onkelz05 Oct 09, 2012 at 13:19:08 (UTC)
Goto Top
Zitat von @Dani:
schau dir den PowerShell Befehl "get-snmp" an. Damit solltest du problemlos an die Infos ran kommen.
Beispiele gibts bei Google zu genüge.


Habe gerade mal in PS get-help get-snmp eingegeben und diese Meldung bekommen:

Get-Help : Zum Thema "Get-Snmp" kann keine Hilfe gefunden werden.
Bei Zeile:1 Zeichen:9

back-to-topget-help <<<< Get-Snmp

+ CategoryInfo : ResourceUnavailable: (face-smile [Get-Help], HelpNotFoundException
+ FullyQualifiedErrorId : HelpNotFound,Microsoft.PowerShell.Commands.GetHelpCommand

Weißt du warum es zu dem Thema bei mir nichts gibt?
Member: Dani
Dani Oct 09, 2012 at 13:25:00 (UTC)
Goto Top
Vergiss es... das ist bei uns ein kostenpflichtes Addon:
http://www.powershellinside.com/powershell/netcmdlets/download.aspx


Grüße,
Dani
Member: Onkelz05
Onkelz05 Oct 09, 2012 updated at 13:33:36 (UTC)
Goto Top
Ah alles klar, vielen Dank

Andere Möglichkeiten ne Batchdatei etc. gibt es nicht? face-confused
Member: aqui
aqui Oct 09, 2012 updated at 15:36:04 (UTC)
Goto Top
Doch, lad dir net-snmp runter:
http://www.net-snmp.org/
mit den dortigen Shell Kommandos wie "snmpget" sollte das dann mit der Batch (und ggf. "bastla's" Hilfe face-wink ) kein Thema sein.
Member: psannz
psannz Oct 09, 2012 at 17:59:07 (UTC)
Goto Top
Kannst dir auch mal den MiB Browser von iReasoning anschaun (http://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
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 06:45:46 (UTC)
Goto Top
Jep automatisiert soll es nicht laufen, ist ja nur nen erster Versuch.

Dann schau ich mir mal MiB Browser und snmpget an und versuch da mal ne kleene Batch zu basteln.

Habt ihr da bereits Erfahrungen?

Danke schonmal
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 07:00:35 (UTC)
Goto Top
Nochmal eine Verständnisfrage... (wie gesagt kompletter Neueinsteiger).
Also kann ich eine Batch schreiben die über net-snmp
die gewünschten OID´s der gewünschten Systeme ausliest und diese in eine txtdatei schreibt?

Sollte ja "eigentlich" nicht so schwer sein.
Member: psannz
psannz Oct 10, 2012 updated at 07:12:47 (UTC)
Goto Top
get-snmp IP OID>>C:\das\ist\der\Datei\Pfad.txt
Der Befehl ">>C:\das\ist\der\Datei\Pfad.txt" hängt dir das Ergebnis von "get-snmp IP OID" in einer neuen Zeile am Ende von Pfad.txt an. Falls die Datei noch nicht existiert wird sie erstellt. Ist ein ganz normaler Batchbefehl.

Wie genau dein Auslesebefehl heisst ist in dem Fall egal. Gespeichert wird die Ausgabe des Befehls.
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 07:31:23 (UTC)
Goto Top
Zitat von @psannz:
> get-snmp IP OID>>C:\das\ist\der\Datei\Pfad.txt
> 
Der Befehl ">>C:\das\ist\der\Datei\Pfad.txt" hängt dir das Ergebnis von "get-snmp IP OID" in einer
neuen Zeile am Ende von Pfad.txt an. Falls die Datei noch nicht existiert wird sie erstellt. Ist ein ganz normaler Batchbefehl.

Wie genau dein Auslesebefehl heisst ist in dem Fall egal. Gespeichert wird die Ausgabe des Befehls.


Alles klar. Bat erstellt .txt datei auch leider wird nur ne leere .txt erstellt.
Muss ich noch nen Pfad zu get-snmp angeben, die .bat in nen bestimmten Pfad hineinpacken oder ähnliches?
(Auf der Windowsoberfläche rumsurfen ist soviel einfacher :D )

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

C:\usr ist auch der Ordner in den ich net-snmp installiert habe.
Die OID ist die für den Gesamtzählerstand des Druckers.

Vielen Dank für die Hilfe face-smile
Member: psannz
psannz Oct 10, 2012 at 07:39:36 (UTC)
Goto Top
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.
Mitglied: 60730
60730 Oct 10, 2012 at 07:59:24 (UTC)
Goto Top
Moin,

  • 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

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ß
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 08:13:06 (UTC)
Goto Top
inner Batch sagt er mir Der Befehl "get-snmp" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Ich muss der Batch doch sicherlich mitteilen, wo Sie den Befehl herkriegt oder?
Also nen Pfad zu net-snmp aber ich habe keine Ahnung wie und auf welche Datei.... face-confused
Und in PS sagt er mir auch das er den Befehl nicht kennt, da muss ich doch sicherlich auch erstmal das net-snmp importieren oder? Wenn ja WIE :D

Danke
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 08:36:58 (UTC)
Goto Top
LimboSeil,

genau das ist es.
Wie gesagt blutiger Anfänger, habe ein Einsteiger Tutorial für PS durchgearbeitet.
Viel mehr aber leider nicht.
Falls Ihr sonst gute Onlinehilfen kennt, in denen sowas mal anschaulich mit Beispielen erklärt wird,
oder ähnliches wäre ich sehr dankbar.
Viell. auch irgendnen Tool was vom Aufbau her ähnlich ist um mir einfach mal in Ruhe die Quellcodes anschauen
zu können, um besser zu verstehen was ich wofür brauche.

Gruß
Member: psannz
psannz Oct 10, 2012 at 08:42:46 (UTC)
Goto Top
Zitat von @60730:
[...]
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
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 09:56:29 (UTC)
Goto Top
Ersteinmal VIELEN DANK für die ganzen Hilfen und Tipps.
Ich werde mir das Handbuch aufjedenfall durchlesen.

Nun habe ich aber den ersten Erfolg face-smile

Quellcode der Batch:
"
cd ..
cd ..
cd ..
cd ..
C:
cd usr\bin

echo Name des Systems>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.2.1.1.5.0>>C:\usr\Zähler.txt
echo.>>C:\usr\Zähler.txt
echo Seriennummer>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.4.1.367.3.2.1.2.1.4.0>>C:\usr\Zähler.txt
echo.>>C:\usr\Zähler.txt
echo Zähler Gesamtvolumen>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.4.1.367.3.2.1.2.19.1.0>>C:\usr\Zähler.txt
echo.>>C:\usr\Zähler.txt
echo Zähler Druck>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.4.1.367.3.2.1.2.19.2.0>>C:\usr\Zähler.txt
echo.>>C:\usr\Zähler.txt
echo Zähler Fax>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.4.1.367.3.2.1.2.19.3.0>>C:\usr\Zähler.txt
echo.>>C:\usr\Zähler.txt
echo Zähler Kopie>>C:\usr\Zähler.txt
snmpget -v 1 -c public 10.144.83.186 1.3.6.1.4.1.367.3.2.1.2.19.4.0>>C:\usr\Zähler.txt

PAUSE"

Ausgabe in txt:
"
Name des Systems
SNMPv2-MIB::sysName.0 = STRING: Aficio MP C5501

Seriennummer
SNMPv2-SMI::enterprises.367.3.2.1.2.1.4.0 = STRING: "V960340"

Zähler Gesamtvolumen
SNMPv2-SMI::enterprises.367.3.2.1.2.19.1.0 = INTEGER: 2591

Zähler Druck
SNMPv2-SMI::enterprises.367.3.2.1.2.19.2.0 = INTEGER: 2164

Zähler Fax
SNMPv2-SMI::enterprises.367.3.2.1.2.19.3.0 = INTEGER: 0

Zähler Kopie
SNMPv2-SMI::enterprises.367.3.2.1.2.19.4.0 = INTEGER: 406 "

Die Zahlen sind auch die tatsächlichen Zählerstände face-smile
Nur dat ganze dedöns davor stört mich, soll ja Benutzerfreundlich sein.
Aber für den kompletten Neueinstieg stellt es mich zufrieden.

Vielen Dank an Alle
Member: psannz
psannz Oct 10, 2012 updated at 10:05:12 (UTC)
Goto Top
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.
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 10:22:42 (UTC)
Goto Top
Werd ich gleich mal ausprobieren face-smile

Gibt es ne Möglichkeit "SNMPv2-SMI::enterprises.367.3.2.1.2.19.3.0 = INTEGER:" in der Ausgabe auszuklammern?
Das wirklich nur die Zahl in die .txt geschrieben wird?
Member: psannz
psannz Oct 10, 2012 updated at 10:28:09 (UTC)
Goto Top
ja, die Ausgabe kannst du über -o konfigurieren. Stichworte: -O, OUTOPTS und Handbuch ;)
Mitglied: 60730
60730 Oct 10, 2012 updated at 11:24:18 (UTC)
Goto Top
moin,

[OT]
Zitat von @psannz:
Zitat von @60730:
[...]
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 face-wink
Ich meinte aber das Zeichen nach der 0 und vor dem ersten >
Aber habt Ihr ja schon ohne mich rausgefunden face-wink

[/OT]

Ps:
Statt der Baustelle

cd ..
cd ..
cd ..
cd ..
C:
cd usr\bin
würde ein simples
cd /d c:\usr\bin
"auch" reichen

Gruß
Member: Onkelz05
Onkelz05 Oct 10, 2012 updated at 15:00:23 (UTC)
Goto Top
Zitat von @60730:
würde ein simples
>>> cd /d c:\usr\bin
"auch" reichen

Cool danke, hatte mir schon gedacht das es da noch ne andere elegantere Lösung gibt :D

Der Code sieht nun so aus:

cd /d c:\usr\bin

set /p IpAdresse=IP-Adresse eingeben: 


echo.>>C:\usr\Zaehler.txt

echo Name des Systems:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.2.1.1.5.0>>C:\usr\Zaehler.txt
echo.>>C:\usr\Zaehler.txt

echo Seriennummer:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.1.4.0>>C:\usr\Zaehler.txt
echo.>>C:\usr\Zaehler.txt

echo Zähler Gesamtvolumen:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.1.0>>C:\usr\Zaehler.txt
echo.>>C:\usr\Zaehler.txt

echo Zähler Druck:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.2.0>>C:\usr\Zaehler.txt
echo.>>C:\usr\Zaehler.txt

echo Zähler Fax:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.3.0>>C:\usr\Zaehler.txt
echo.>>C:\usr\Zaehler.txt

echo Zähler Kopie:>>C:\usr\Zaehler.txt
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.4.1.367.3.2.1.2.19.4.0>>C:\usr\Zaehler.txt


PAUSE

Hab noch ne Eingabe reingepackt, damit man die IP ändern kann ohne immer alles im Quellcode zu ändern.

Mit -Ov als Output Option siehts dann so aus:

STRING: Aficio MP C5501
INTEGER: 2591

Den Datentyp habe ich leider nicht rausbekommen face-confused
Habt ihr da ne Lösung?
Mitglied: 60730
60730 Oct 10, 2012 updated at 14:14:08 (UTC)
Goto Top
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:
vor der ganzen Baustelle durchzufuehren.
Member: Onkelz05
Onkelz05 Oct 10, 2012 at 15:04:10 (UTC)
Goto Top
1. erledigt
2. Klingt logisch habs in (Zaehler) geändert.
3. Jap, die Seiten stimmen mit dem Zählerstand den ich am System auslesen kann überein.

Den Ping finde ich interessant, werde ich morgen früh gleichmal ausprobieren face-smile
Habe auch schon überlegt, ob man ne Tabelle einfügt aus der ne Reihe von Systemen ausgelesen wird.
Damit könnte man alle Systeme (oder jedenfalls die meisten) im Netzwerk auf einen Schlag abarbeiten.

Werde morgen mal schauen wie weit ich komme.

Aufjedenfall danke ich euch beiden für eure Unterstützung.
Selten ein so schönes Forum gesehn.

Gruß und schönen Abend
Mitglied: 60730
60730 Oct 10, 2012 updated at 20:41:25 (UTC)
Goto Top
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

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
Das kannst du natuerlich auch in die Batch integrieren, dann solltest du aber call :prozedur nutzen (der Doppelpunktist extrem wichtig) der Einstiegspunkt "check" wäre deiner.


Gruß
Member: Onkelz05
Onkelz05 Oct 11, 2012 updated at 08:12:05 (UTC)
Goto Top
Zitat von @60730:
> :check
> Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit  
> 

Wenn meine Überlegung nicht ganz falsch ist, müsste ich da noch ne if-Abfrage machen oder?
Muss noch schauen wie die Syntax aussieht aber:
> :check
> Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit  
> 
> if $IPAdresse% ist erreichbar 
> then start
> else
> exit
> 

So in der Art?! 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?


machst du:
> if "%1"="" set /p IpAdresse=IP-Adresse eingeben:
> 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
> 

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?

Gruß

PS. Entschuldigt die vielen Fragen, möchte eifnach verstehen was ich da tue und nicht nur sinnlos Quellcodes kopieren.
Mitglied: 60730
60730 Oct 11, 2012 updated at 10:18:46 (UTC)
Goto Top
MOin,

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 face-wink (ich geb dir nen Tipp)
&& 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
  1. diese da oben
  2. den einzeiler
  3. eine Steuerdatei

Gruß
Member: Onkelz05
Onkelz05 Oct 11, 2012 at 08:45:09 (UTC)
Goto Top
Probiers doch mal aus face-wink (ich geb dir nen Tipp)
>> && echo %IpAdresse% ist erreichbar

Habe es so ausprobiert:
:check
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht   
erreichbar & exit

Dabei schließt er das Programm ohne etwas zutun (egal ob IP erreichbar oder nicht)
Wenn ich exit durch Pause ersetze, stoppt er auch in beiden fällen aber arbeitet danach den rest normal ab.
face-confused
Mitglied: 60730
60730 Oct 11, 2012, updated at Oct 12, 2012 at 06:36:26 (UTC)
Goto Top
Salve,

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ß

back-to-topedit - alles bullshit - da hab ich die eierlegende draus zimmern wollen (mit Parameter und ohne dafür die UIDs ausgelagert - das läuft so garnicht)

Member: Onkelz05
Onkelz05 Oct 11, 2012 at 13:46:33 (UTC)
Goto Top
Moin,
erst einmal vielen Dank! Genauso habe ich es mir vorgestellt.
Da ich daraus aber natürlich lernen möchte.
Versuche ich hier mal deinen Quellcode mit eigenen Kommentaren zu belegen.
Verbesserungen und Anmerkungen ausdrücklich erwünscht!
cd /d C:usr\bin 
Pfadansteuerung von Get-SNMP
for /f %%a in (C:\usr\bin\systeme.ini) do call :uid %%a
Schleife zum Einlesen von IP Adressen aus der systeme.ini
:error
 echo %IpAdresse% ist nicht erreichbar 
 exit /b
Fehlermeldung falls IP nicht angepingt werden kann
:Ping  %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar & goto Systemname || goto error  
for /f "tokens=1,2 delims=;" %%a in (C:\usr\bin\uid.ini) do call :job %1 %%a %%b   
goto end
For Schleife zum einlesen der OID´s. Token=1,2 bedeutet er soll von Spalte 1 und 2 die Daten einlesen. Delims=; sagt an wie die Spalten in der .ini getrennt sind indem Fall durch ;
for /f "tokens=1,2 delims=: " %%a in ('snmpget -v 1 -c public -Ov %1 %3') do echo %2;%%b>>C:\usr\Zaehler.txt  
Selbe Spiel bei Token und delims… (snmpget befehl –version –community –Outputoptions)
und ausgabe in Zaehler.txt

Hoffe das ist soweit richtig.
Womit ich mich extrem schwer tue ist die Maßenanwendung von Variablen.
Vielleicht kannste da bei so nem hoffnungslosen Fall wie mir, noch etwas Licht ins Dunkel bringen^^
Danke

Gruß
Mitglied: 60730
60730 Oct 11, 2012, updated at Oct 12, 2012 at 06:32:56 (UTC)
Goto Top
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)

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.
Member: Onkelz05
Onkelz05 Oct 12, 2012 updated at 11:49:10 (UTC)
Goto Top
Läuft face-smile

find ich sehr gut, vielen Dank.

Ping klappt auch face-smile außer das er wenn ne Fehlerhafte IP irgendwo in der Liste ist das Programm beendet und nicht fortführt.

Aber das kann ich ja ändern indem ich in der :error sage IP .... ist nicht verfügbar >>Zaehler.csv
Oder ne eigene .csv für die fehlenden Systeme.
Member: marek1
marek1 Mar 19, 2013 at 00:01:18 (UTC)
Goto Top
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:
http://www.mazursoft.ch/truemonitor