IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Conception Moniteur Snmp


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut Conception Moniteur Snmp
    Bonjour,

    Je dois développer un outil me permettant de recevoir les traps SNMP envoyé sur un réseau sans me soucier de l’hôte. Un moniteur snmp en quelque somme.

    Hors plusieurs je suis en train d’étudier plusieurs librairies Delphi comment Indy10 (via TidSnmp) et SNMPSynapse.
    Je voulais savoir si il était possible de recevoir les traps SNMP avec car si j'arrive assez facilement a envoyer des requêtes type Get ou GetNext, je n'arrive pas à recevoir les traps.
    De plus, la documentation des Api est plus que succincte ...

    Avez vous une idée de la manière de s'y prendre ? Merci d'avance...

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    D'après ce post dans un newsgroup il apparaîtrait que TTrapSNMP (de synapse) est le composant répondrait à ton besoin.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut
    Bonjour, merci , mais ce composant n'existe pas , de plus le documentation est très réduite, aucune explication sur le fonctionnement des méthode , aucun exemple de code.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Sisi le composant existe, on peut retrouver le code source ici. Par contre effectivement pour les exemples... Pour ma part je connais pas du tout, je te donnes juste ce qui sort de google.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Par défaut
    Bonjour, j'ai effectivement trouvé le composant, malheureusement, je n'arrive pas a capturer les traps. De plus, le protocole snmp reposant sur udp, j'ai essayé de faire un bête lecture du port 162 (assigné au traps snmp) à l'aide de divers composants, mais je n'arrive pas a réceptionner quoi que ce soit.

    Existe t il une documentation plus fournis (comprenant exactement code détails des propriétes méthode ) et sur les composant réseaux tel indy10 ou synapse ?

  6. #6
    Invité de passage
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut Moniteur snmp sous delphi
    J'ai un peu triché avec INDY comme le composant TIDSNMP n'a pas de propriéte OnReceive ou OnClientREAD je mesuis servi d'un composant
    TiUDPServer et je passe les données au client SNMP pour Qu'il les decode

    Dans mon exemple je récupère des traps asynchrones sans demande préalable
    sur des équipement Faisceau Hertziens montés en boucle TCP/IP les traps
    sont sont envoyés à l'apparition des défauts sur les équipements.
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    unit UDPServerMain;
    
    interface
    
    uses
      Windows, Classes, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2,
      stdctrls, SysUtils,  IdBaseComponent, IdAntiFreezeBase,
      IdAntiFreeze, IdComponent, IdUDPBase, IdUDPClient, IdStack,
      IdUDPServer, IdSocketHandle,IdGlobal,  IdSNMP, ComCtrls, Grids,
      StringGridToText, DBGrids;
    
    
    type
      TUDPMainForm = class(TForm)
        IdSNMP1: TIdSNMP;
        UDPServer1: TIdUDPServer;
        IdAntiFreeze1: TIdAntiFreeze;
        PageControl1: TPageControl;
        Reception: TTabSheet;
        DECODAGE: TTabSheet;
        SourceGroupBox: TGroupBox;
        HostNameLabel: TLabel;
        HostAddressLabel: TLabel;
        HostName: TLabel;
        HostAddress: TLabel;
        PortLabel: TLabel;
        Port: TLabel;
        BufferSizeLabel: TLabel;
        BufferSize: TLabel;
        UDPMemo: TMemo;
        StringGridToText1: TStringGridToText;
        Visu: TTabSheet;
        DBGrid1: TDBGrid;
        StatusBar1: TStatusBar;
        procedure UDPServer1UDPRead(Sender: TObject; AData: TBytes;
          ABinding: TIdSocketHandle);
        procedure FormCreate(Sender: TObject);
    
    
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      UDPMainForm: TUDPMainForm;
      enterprise:String;
      origOid: string;
      lastpos:integer;
    
    
    
    
    implementation
    
    const
      HOSTNAMELENGTH = 80;
    
    {$R *.DFM}
    
    procedure TUDPMainForm.FormCreate(Sender: TObject);
    begin
      HostAddress.Caption := GStack.LocalAddress;
      Port.Caption := IntToStr(UDPServer1.DefaultPort);
      BufferSize.Caption := IntToStr(UDPServer1.BufferSize);
      UDPServer1.Active := True;
      //HostName.Caption := IdSNMP1.Name;
      HostName.Caption := GStack.HostName;
      Port.Caption := IntToStr(IdSNMP1.TrapPort);
      //BufferSize.Caption := IntToStr(IdSNMP1.BufferSize);
      IdSNMP1.Community := 'public';
      IdSNMP1.Trap.Enterprise := '1.3.6.1.4.1';
      IdSNMP1.Trap.GenTrap := 6;  //ENTERPRISESPECIFIC
      IdSNMP1.Trap.SpecTrap := 1;
      IdSNMP1.Trap.TimeTicks := 1000;
      IdSNMP1.Trap.port:=162;
      IdSNMP1.Trap.PDUType:=PDUTrap;
      IdSNMP1.Active := True;
      //IdSNMP1.Trap.MIBOID.LoadFromFile('MiBsodielec.txt');
      lastpos:=0;
      StringGridToText1.Cells[0,0]:='Adr IP'; StringGridToText1.Cells[1,0]:='Type';
      StringGridToText1.Cells[2,0]:='Libellé';StringGridToText1.Cells[3,0]:='Date';
      StringGridToText1.Cells[4,0]:='Heure';//StringGridToText1.Cells[7,0]:='Heure';
    end;
    
    procedure TUDPMainForm.UDPServer1UDPRead(Sender: TObject; AData: TBytes;
      ABinding: TIdSocketHandle);
    var
      list:TStrings;
      i,j :integer;
      s,addstr,trav: String;
    begin
      list:=TStringlist.Create;
      addstr:=String(Adata);
      try
        IdSNMP1.Trap.DecodeBuf(Addstr);
        s:='';
        UDPMemo.Lines.Add('Reçu '+inttostr(length(addstr))+
        'car(s) de' + ABinding.PeerIP + ' :' +
        IntToStr(ABinding.PeerPort)+' pos:'+intToStr(Lastpos));
        list.Add(ABinding.PeerIP);
        i:=0;
        repeat
          j:=i+lastpos;
         //ma cuisine pour récupérer ce qui m'interesse
          if Not(i in [0,3,4,7,8,9]) then       begin
             trav:=IdSNMP1.Trap.ValueOID[j];
             if i=5 then
               trav:=copy(Trav,7,2)+'/'+copy(Trav,5,2)+'/'+copy(Trav,1,4);
             if i=6 then
               trav:=copy(Trav,1,2)+':'+copy(Trav,3,2)+':'+copy(Trav,5,2);
             s:=s+trav+',';list.Add(trav);
          end;
          inc(i);
        Until j=IdSNMP1.trap.ValueCount;
        lastpos:= IdSNMP1.trap.ValueCount  ;
        UDPMemo.Lines.Add(s);
        StringGridToText1.Rows[StringGridToText1.RowCount-1]:=list;
        StringGridToText1.RowCount:=StringGridToText1.RowCount+1;
      finally
        s:=''; addstr:='';
      end;
    
    end;
    
    
    end.
    J'espère que ça pourra servir
    les critiques sont les bienvenues

Discussions similaires

  1. conception sur le protocole snmp v1
    Par faracha21 dans le forum ALM
    Réponses: 0
    Dernier message: 23/02/2010, 13h20
  2. [Concept] Métadatas ?
    Par melinda dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 10/11/2004, 11h56
  3. [Concept] Réplication
    Par melinda dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/03/2003, 17h29
  4. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13
  5. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo