Thema: Delphi SNMP Traps senden

Einzelnen Beitrag anzeigen

Benutzerbild von movietigger
movietigger

Registriert seit: 15. Dez 2004
Ort: Niedernhausen
4 Beiträge
 
Delphi 2006 Professional
 
#3

Ärger mit den Indy-Komponenten bei SNMP

  Alt 19. Jul 2007, 07:27
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;
  Mit Zitat antworten Zitat