Hallo zusammen,
ich benötige eure Hilfe für ein Logikproblem, das ich schon den ganzen Tag versuche zu lösen.
Ich muß in regelmäßigen Abständen die Seitenzähler der Drucker auslesen.
Bisher habe ich das per copy & paste über die Eingabeaufforderung mit "snmpget ip public oid" gemacht.
Dafür hatte ich mir 3 Textdateien angelegt. Datei 1 beinhaltet die IP's, Datei 2 die Modellnamen und Datei 3 die oid's die abgefragte werden sollen.
Jetzt würde ich das gerne automatisieren, wofür ich mir hier aus dem Forum und aus der Hilfe dieses Script gebastelt habe. Es läuft auch, allerdings bekomme ich nur die Daten des in der 2ten Zeile eingetragenen Druckers zurück.
Wo liegt denn der Fehler, oder ist das so vielleicht überhaupt nicht umsetzbar?
Spoiler anzeigen
#include <File.au3>
#Include <Array.au3>
Local $pid, $ausfuehren, $aIP, $aModell, $aMib
[/autoit] [autoit][/autoit] [autoit]_FileReadToArray(@ScriptDir & "\ip.txt", $aIP)
_ArrayDisplay($aIP, "IP")
For $x = 1 to $aIP[0]
$ip = ($aIP[$x])
Next
_FileReadToArray(@ScriptDir & "\modell.txt", $aModell)
_ArrayDisplay($aModell, "Modell")
For $y = 1 to $aModell[0]
$modell = ($aModell[$y])
Next
_FileReadToArray(@ScriptDir & "\" & $modell & ".txt", $aMib)
_ArrayDisplay($aMib, "Modell.txt")
For $z = 1 to $aMib[0]
$mib = ($aMib[$z])
$ausfuehren = _snmp(@ComSpec & " /c " & "snmpget -v1 -c public " & $ip & chr(32) & $mib)
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit]Func _snmp($cmd)
$pid = Run($cmd, @TempDir , "", 2)
$ausfuehren = ""
While 1
$ausfuehren &= StdoutRead($pid)
If @error Then ExitLoop
Wend
FileWrite(@ScriptDir & "\snmpget.txt", $ausfuehren)
Return $ausfuehren
EndFunc
Spoiler anzeigen
ip.txt
192.168.1.10
192.168.1.11
.
.
usw.
modell.txt
HPLJ4200
HPLJ4250
.
.
usw.
HPLJ4200.txt
1.3.6.1.4.1.11.2.4.3.5.2.0
1.3.6.1.2.1.43.5.1.1.17.1
1.3.6.1.2.1.43.10.2.1.4.1.1
HPLJ4250.txt
1.3.6.1.4.1.11.2.4.3.5.2.0
1.3.6.1.2.1.43.5.1.1.17.1
1.3.6.1.2.1.43.10.2.1.4.1.1
Gruß Anna