Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zählerstands OiD vom Drucker auslesen

Frage Entwicklung Batch & Shell

Mitglied: Onkelz05

Onkelz05 (Level 1) - Jetzt verbinden

09.10.2012 um 15:03 Uhr, 11117 Aufrufe, 32 Kommentare

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
32 Antworten
Mitglied: Dani
09.10.2012 um 15:07 Uhr
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
Bitte warten ..
Mitglied: Onkelz05
09.10.2012 um 15:19 Uhr
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

get-help <<<< Get-Snmp

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

Weißt du warum es zu dem Thema bei mir nichts gibt?
Bitte warten ..
Mitglied: Dani
09.10.2012 um 15:25 Uhr
Vergiss es... das ist bei uns ein kostenpflichtes Addon:
http://www.powershellinside.com/powershell/netcmdlets/download.aspx


Grüße,
Dani
Bitte warten ..
Mitglied: Onkelz05
09.10.2012, aktualisiert um 15:33 Uhr
Ah alles klar, vielen Dank

Andere Möglichkeiten ne Batchdatei etc. gibt es nicht?
Bitte warten ..
Mitglied: aqui
09.10.2012, aktualisiert um 17:36 Uhr
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 ) kein Thema sein.
Bitte warten ..
Mitglied: psannz
09.10.2012 um 19:59 Uhr
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
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 08:45 Uhr
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
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 09:00 Uhr
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.
Bitte warten ..
Mitglied: psannz
10.10.2012, aktualisiert um 09:12 Uhr
01.
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.
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 09:31 Uhr
Zitat von psannz:
01.
> get-snmp IP OID>>C:\das\ist\der\Datei\Pfad.txt 
02.
> 
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
Bitte warten ..
Mitglied: psannz
10.10.2012 um 09:39 Uhr
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.
Bitte warten ..
Mitglied: 60730
10.10.2012 um 09:59 Uhr
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ß
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 10:13 Uhr
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....
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
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 10:36 Uhr
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ß
Bitte warten ..
Mitglied: psannz
10.10.2012 um 10:42 Uhr
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
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 11:56 Uhr
Ersteinmal VIELEN DANK für die ganzen Hilfen und Tipps.
Ich werde mir das Handbuch aufjedenfall durchlesen.

Nun habe ich aber den ersten Erfolg

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
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
Bitte warten ..
Mitglied: psannz
10.10.2012, aktualisiert um 12:05 Uhr
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.
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 12:22 Uhr
Werd ich gleich mal ausprobieren

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?
Bitte warten ..
Mitglied: psannz
10.10.2012, aktualisiert um 12:28 Uhr
ja, die Ausgabe kannst du über -o konfigurieren. Stichworte: -O, OUTOPTS und Handbuch ;)
Bitte warten ..
Mitglied: 60730
10.10.2012, aktualisiert um 13:24 Uhr
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
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
würde ein simples
cd /d c:\usr\bin
"auch" reichen

Gruß
Bitte warten ..
Mitglied: Onkelz05
10.10.2012, aktualisiert um 17:00 Uhr
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:

01.
cd /d c:\usr\bin 
02.
 
03.
set /p IpAdresse=IP-Adresse eingeben:  
04.
 
05.
 
06.
echo.>>C:\usr\Zaehler.txt 
07.
 
08.
echo Name des Systems:>>C:\usr\Zaehler.txt 
09.
snmpget -v 1 -c public -Ov %IpAdresse% 1.3.6.1.2.1.1.5.0>>C:\usr\Zaehler.txt 
10.
echo.>>C:\usr\Zaehler.txt 
11.
 
12.
echo Seriennummer:>>C:\usr\Zaehler.txt 
13.
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 
14.
echo.>>C:\usr\Zaehler.txt 
15.
 
16.
echo Zähler Gesamtvolumen:>>C:\usr\Zaehler.txt 
17.
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 
18.
echo.>>C:\usr\Zaehler.txt 
19.
 
20.
echo Zähler Druck:>>C:\usr\Zaehler.txt 
21.
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 
22.
echo.>>C:\usr\Zaehler.txt 
23.
 
24.
echo Zähler Fax:>>C:\usr\Zaehler.txt 
25.
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 
26.
echo.>>C:\usr\Zaehler.txt 
27.
 
28.
echo Zähler Kopie:>>C:\usr\Zaehler.txt 
29.
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 
30.
 
31.
 
32.
PAUSE 
33.
 
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
Habt ihr da ne Lösung?
Bitte warten ..
Mitglied: 60730
10.10.2012, aktualisiert um 16:14 Uhr
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:
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar
vor der ganzen Baustelle durchzufuehren.
Bitte warten ..
Mitglied: Onkelz05
10.10.2012 um 17:04 Uhr
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
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
Bitte warten ..
Mitglied: 60730
10.10.2012, aktualisiert um 22:41 Uhr
01.
cd /d c:\usr\bin 
02.
 
03.
:para 
04.
set /p IpAdresse=IP-Adresse eingeben:  
05.
 
06.
:check 
07.
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit 
08.
 
09.
:Systemname 
10.
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 
11.
 
12.
:Seriennummer 
13.
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 
14.
 
15.
:Gesamtvolumen 
16.
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 
17.
 
18.
:Druck 
19.
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 
20.
 
21.
:Fax 
22.
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 
23.
 
24.
:Kopie 
25.
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 
26.
 
27.
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
01.
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ß
Bitte warten ..
Mitglied: Onkelz05
11.10.2012, aktualisiert um 10:12 Uhr
Zitat von 60730:
01.
> :check 
02.
> Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit 
03.
> 

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:
01.
> :check 
02.
> Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht erreichbar & exit 
03.
>  
04.
> if $IPAdresse% ist erreichbar  
05.
> then start 
06.
> else 
07.
> exit 
08.
> 
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
01.
> for /f %%a in (laufwerk:\pfad\datei.suffix) do call pfad_und_name_der_batch %%a 
02.
> 

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.
Bitte warten ..
Mitglied: 60730
11.10.2012, aktualisiert um 12:18 Uhr
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 (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ß
Bitte warten ..
Mitglied: Onkelz05
11.10.2012 um 10:45 Uhr
Probiers doch mal aus (ich geb dir nen Tipp)
>> && echo %IpAdresse% ist erreichbar

Habe es so ausprobiert:
01.
:check 
02.
Ping %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar || echo %IpAdresse% ist nicht  
03.
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.
Bitte warten ..
Mitglied: 60730
11.10.2012, aktualisiert 12.10.2012
Salve,

ich hab mal etwas aufgeräumt und eingedampft.
Bei mir lauetet der Pfad C:\script\snmp\ - entweder anpassen oder ändern.



01.
Rem hier stand ein bisschen viel code, der in meinem hirn entwixkelt wurde und im  webbrowser komponiert wurde. 
02.
Echo weiter gehts unten... 
03.
:end
und das braucht eine "uid.ini" in der steht dann:
01.
Systemname;1.3.6.1.2.1.1.5.0 
02.
Seriennummer;1.3.6.1.4.1.367.3.2.1.2.1.4.0 
03.
Counter_Total;1.3.6.1.4.1.367.3.2.1.2.19.1.0 
04.
Counter_Print;1.3.6.1.4.1.367.3.2.1.2.19.2.0 
05.
Counter_Fax;1.3.6.1.4.1.367.3.2.1.2.19.3.0 
06.
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ß

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

Bitte warten ..
Mitglied: Onkelz05
11.10.2012 um 15:46 Uhr
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!
01.
cd /d C:usr\bin 
Pfadansteuerung von Get-SNMP
01.
for /f %%a in (C:\usr\bin\systeme.ini) do call :uid %%a
Schleife zum Einlesen von IP Adressen aus der systeme.ini
01.
:error 
02.
 echo %IpAdresse% ist nicht erreichbar  
03.
 exit /b
Fehlermeldung falls IP nicht angepingt werden kann
01.
:Ping  %IpAdresse%| find "TTL" && echo %IpAdresse% ist erreichbar & goto Systemname || goto error
Anpingen der IP, wenn IP erfolgreich angepingt Ausgabe: IP-Adresse ist erreichbar & gehe zum Systemname in der UID.ini || falls nicht möglich anzupingen gehe zu :error
01.
for /f "tokens=1,2 delims=;" %%a in (C:\usr\bin\uid.ini) do call :job %1 %%a %%b  
02.
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 ;
01.
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ß
Bitte warten ..
Mitglied: 60730
11.10.2012, aktualisiert 12.10.2012
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)

01.
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. 
02.
 
03.
cd /d C:\script\snmp\bin 
04.
 
05.
:para 
06.
 
07.
:systeme 
08.
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) 
09.
for /f  %%a in (C:\script\snmp\systeme.ini) do call :uid %%a 
10.
rem fertig - alles andere sind unterprozeduren, die nur angetriggert werden 
11.
goto end 
12.
 
13.
:error 
14.
rem im falle eines Fehlers 
15.
@echo %1 ist nicht erreichbar 
16.
rem damit man trotz exit auch was sieht 
17.
@ping -n 10 localhost>nul 
18.
exit 
19.
 
20.
 
21.
:uid 
22.
rem checke, ob die oben mitgegebene IP (%1) ereichbar ist, sage yupp oder gehe direkt ins Kittchen 
23.
@Ping %1| find "TTL">nul && echo %1 ist erreichbar || goto error 
24.
rem in der uid.ini stehen semikolongetrennt die Klartexte und deren UID 
25.
rem rufe pro IP (%1) jede zeile einmal auf (kommen dann in der Prozedur als %1 %2 %3 an!) 
26.
for /f "tokens=1,2 delims=;" %%a in (C:\script\snmp\uid.ini) do call :job %1 %%a %%b 
27.
goto end 
28.
 
29.
:job 
30.
rem war doch immer genau der gleiche Aufruf, nur die klartexte und uid war anders, also eindampfen 
31.
rem achtung "tricky" es ist hybscher, wenn in der uid.ini zuerst der Klartext und dann die dazugehörige UID steht 
32.
rem aber der Aufruf muß "anders" herum sein, also %1 ist immer noch IP %2 ist der Klartext und %3 ist die UID  
33.
Rem %%b ist das, was nach dem leerzeichen und : (delims) bei der ausgabe herauskommt. 
34.
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 
35.
 
36.
:end
Gruß

Status "ungetestet"!!!
Ich hab die zwar getestet, aber hier nicht die getestete reingeschrieben, sondernon the fly.hier was geändert.
Bitte warten ..
Mitglied: Onkelz05
12.10.2012, aktualisiert um 13:49 Uhr
Läuft

find ich sehr gut, vielen Dank.

Ping klappt auch 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.
Bitte warten ..
Mitglied: marek1
19.03.2013 um 01:01 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Per Skript lokal angeschlossene USB Drucker auslesen (7)

Frage von pixel0815 zum Thema Batch & Shell ...

Windows 7
gelöst Bereits eingebundener Drucker - IP Adresse lokal auslesen (17)

Frage von harald.schmidt zum Thema Windows 7 ...

Netzwerkgrundlagen
SMB-Scanfreigabe von Xerox-Drucker (8)

Frage von mcdutch zum Thema Netzwerkgrundlagen ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...