Seit Kurzem beschäftige ich mich mit dem Thema "
SNMP-Trapsendung".
Im Zusammenhang mit Delphi findet man äußerst wenig zu diesem Thema. Gute Demos dazu gibt es offenbar überhaupt nicht. Was bei
Indy oder Synapse dazu geboten wird ist ein Witz...
Damit andere es etwas leichter haben, hier meine bisherigen "Erkennnisse":
--> Die bei
BDS 2006 mitgelieferte
Indy 10 - VCLlib ist zumindest in Punkto "
SNMP" fehlerhaft
--> Die
Indy-
VCL in Version 10 basiert im Wesentlichen auf einer veralteten Variante der Synapse-Lib, man erspart sich einigen Ärger wenn man gleich zum Original greift...
Nun zur Praxis:
INDY
Ich wollte nun einen Trap mit mehreren "Bindings" an ein Ziel(Netzmanagementsystem) senden. Mit
Indy zwar möglich, nur ist durch einen Fehler in der Funktion MibADD(OID,VALUE:string;TYPE:integer) der Parameter Type völlig wirkungslos. Dort sollte der Typ von Value, also Integer, String, etc. angegeben werden. Dieser wird eigentlich dazu benutzt Value vor der Sendung über ASN.1-Synatx entsprechend aufzubereiten, nur bei
Indy ---> nothing. Alles was ich 'adde ist letzendlich bei der Trapsendung immer ein String...
((
SYNAPSE
Mit Synapse funktioniert es (Werte nur zu Demo):
Delphi-Quellcode:
SNMPsend:= TSNMPsend.Create;
SNMPsend.TargetHost:='192.x.x.x';
SNMPsend.TargetPort:='162';
SNMPsend.Query.Community:='public';
SNMPsend.Query.Version:=SNMP_V1;
SNMPsend.Query.PDUType:=PDUTrap;
SNMPsend.Query.OldTrapHost:='192.x.x.x';
SNMPsend.Query.OldTrapEnterprise:='1.0.1.1';
SNMPsend.Query.OldTrapGen:=6;
SNMPsend.Query.OldTrapSpec:=1;
SNMPsend.Query.OldTrapTimeTicks:=0;
//ersten Wert als Integer im Trap definieren (ASN.1-Notation)
SNMPsend.Query.MIBadd('1.0.1.2.3.4','6',ASN1_INT);
//zweiten Wert als String im Trap definieren (ASN.1-Notation)
SNMPsend.Query.MIBadd('1.0.1.2.3.5','Teststring zur Demo',ASN1_OCTSTR);
SNMPsend.SendTrap;
SNMPsend.Free;