Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SNMP Traps senden (https://www.delphipraxis.net/5261-snmp-traps-senden.html)

Phoenix 30. Mai 2003 08:25


SNMP Traps senden
 
Hi Leute,

ich habe gerade ein massives Problem.

Ich muss mit einem kleinen Tool eine SNMP - Trap an einen bestimmten Rechner im Netz senden. Nun hab ich allerdings bei Indy nur einen SNMP-Client ( im Sprachgebrauch Agent ) und keinen 'Server' ( Manager ) gefunden.

Zudem muss ich genau die Trap nachahmen, die unsere USV sendet, wenn sie auf Batteriebetrieb umschaltet.

(Das ganze soll hinterher dazu dienen, einen einzelnen Server testweise zum Herunterfahren zu bringen um zu sehen, ob er das auch geregelt tut. Derzeit können wir nur die USV vom Netz trennen und > 80 Server dann gleichzeitig beim runterfahren zu beobachten ist etwas hektisch ;-) ).

Hat jemand eine Idee, wie ich da am geschicktesten machen kann bzw. wo ich Beispiel-Sourcen herbekomme? Torry, Swiss-Delphi und die einschlägigen Seiten haben mir bisher nicht helfen können :(

Schonmal vielen Dank im Voraus,

Sebastian

Guttural 15. Nov 2006 12:53

Re: SNMP Traps senden
 
Hallo :hi:

Statt ein neues Thema zu starten, möchte ich in den über 3 Jahre alten Thread die Frage wiederholen:
Wo finde ich SNMP Komponenten, Tutorials, Hilfe, Beispiele, irgendwas?!
Delphi 7 bietet zwar eine SNMP-Client- (Agent) an, aber keine SNMP-Server-Komponente (Manager) an.

Ich habe die Aufgabe ein Modul zu schreiben, welches:
1. MIB Tabellen abfragt und die Werte zyklisch darstellt
2. SNMP-Traps verschicken kann
3. SNMP-Traps empfangen kann (SNMP-Manager)

Der derzeitige Stand der Arbeiten ist:
1. Ich kann MIBs in eingeben (in einer Textdatei) und diese dann abfragen.
Der Teil war einfach mit der Indy SNMP-Client-Componente zu machen.
Was mir noch fehlt ist eine Routine für das automatische Einlesen von MIB-Tabellen.

2. Ist schon um einiges heftiger. Man muss dem SNMP-Dienst von Windows mitteilen, dass man ein Trap abschicken will.
Mir wird geraten es mit einer DLL in C++ zu machen... Will ich aber nicht.

3. Hört sich simpel an, aber ich find gar keine Infos dazu.

Im Internet finde ich sonderbar wenig zu dem Thema Delphi+SNMP. Woran liegt es?!
Habe eine Netzwerk-Library "Ararat" aus Tschechien gefunden, aber da funktioniert das Demo-Programm SNMP-Server schon mal nicht.
Dazu noch ein Paket "IP*Works! Secure SNMP" welches aber gut 1000 € kostet und somit wegfällt.

Für Hilfestellungen oder zumindest Tipps wäre ich extrem dankbar.

Thanx!

Guttural

movietigger 19. Jul 2007 07:27

Ärger mit den Indy-Komponenten bei SNMP
 
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz