Ich hätte da mal ne Frage an die Expertenrunde...
Ich würde gerne Drucker per SNMP auslesen... mit der UDF versteht sich...
Frage: Wie kann ich am besten SNMP OIDs verketten? Ich würde gerne bestimmte Werte der einzelnen Drucker (hier exemplarisch nur 2) auslesen.
Für einen Wert klappt es wunderbar, aber wie bekomme ich den zweiten übermittelt? Nur Nacheinander? Ist also eine Abfrage gelaufen und hat den Wert ausgespuckt die nächste?
die Global $oid1 und $oid2 sind ja gleichbleibend... aber im $test1 = _SNMPBuildPacket spuckt er mir immer einen Fehler aus... wenn ich ihn den Befehl so abschicken möchte...
$SNMP_ReqID: possibly used before declaration.
die snmp_udf.au3 ist eine snmp_UDF-v1.7.4.au3 der bequemlichkeit geschuldet nur umbenannt.
Wer kann mir da mal helfen?
Spoiler anzeigen
#include <snmp_udf.au3>
Global $Port = 161 ; UDP 161 = SNMP port
Global $SNMP_Version = 2 ; SNMP v2c (1 for SNMP v1)
Global $SNMP_Community = "public" ; SNMPString(Community) (change it)
Global $result1, $result2
Global $Timeout_msec = 900
Global $oid1 = "iso.3.6.1.2.1.1.1.0"
Global $oid2 = "iso.3.6.1.2.1.1.6.0"
UDPStartup()
For $i = 1 To 2
$Socket = UDPOpen('192.168.x.x', $Port)
$test1 = _SNMPBuildPacket("$oid" & $i, $SNMP_Community, $SNMP_Version, $SNMP_ReqID, "A1")
UDPSend($Socket, $test1)
_StartListener()
;~ ConsoleWrite($result[1][1]&@LF)
Next
UDPCloseSocket($Socket)
ConsoleWrite($result1)
UDPShutdown()
Exit
Func _StartListener()
$Timeout = TimerInit()
While 1
$srcv1 = UDPRecv($Socket, 100)
If $srcv1 <> "" Then $result1 = _ShowSNMPReceived($srcv1)
If @error Or TimerDiff($Timeout) > $Timeout_msec Then ExitLoop
Sleep(50)
WEnd
EndFunc ;==>_StartListener
Alles anzeigen