Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2840 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [perl] envoie de trap SNMPv3

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[perl] envoie de trap SNMPv3

n°2000796
fym37
Posté le 11-06-2010 à 10:43:20  profilanswer
 

Bonjour,
je voudrai envoyer des traps snmp à partir d'un script Perl. Pour cela, je me suis tourné vers la librairie Net::SNMP (documentation).
J'ai tout d'abord créer un utilisateur (dans /etc/snmp/snmptrapd.conf) sur le serveur qui doit recevoir les traps :

Code :
  1. createUser -e 0x0102030405 myuser SHA mypassword AES myotherpassword


Ensuite, je me suis attaqué au script à proprement parlé et j'ai déjà un souci avec l'ouverture d'une session  :cry:  
Voici le code :

Code :
  1. #!/usr/bin/perl
  2. use SNMP;
  3. use Class::Struct;
  4. use Net::SNMP;
  5. my $NMS = "192.168.0.153";
  6. ($session, $error) = Net::SNMP->session(
  7. -hostname => $NMS,
  8. -port => '162',
  9. -version => 'snmpv3',
  10. -username => 'myuser',
  11. -authprotocol => 'sha',
  12. -authpassword => 'mypassword',
  13. -privprotocol => 'aes',
  14. -privpassword => 'myotherpassword');


 
A l'exécution de ce bou de script, j'ai l'erreur suivant :

Received usmStatsUnknownUserNames.0 Report-PDU with value 1 during synchronization


Apparemment l'utilisateur n'est pas reconnu... Ce qui est étrange car si j'utilise la commande Linux :

snmptrap -e 0x0102030405 -v 3 -u myuser -a SHA -A mypassword -x AES -X myotherpassword -l authPriv localhost 40 1.3.6.1.4.1.32569.1.2.2.1.6.1


sa marche !!!
Autre chose que j'ai remarqué : un tcpdump sur le port 162 révèle les échanges suivant :

10:42:33.129365 IP 192.168.0.153.41858 > 192.168.0.153.162:  F=r U= E=  C= GetRequest(13) [|snmp]
10:42:33.129654 IP 192.168.0.153.162 > 192.168.0.153.41858:  F= U= [|snmp][|snmp]
10:42:33.133520 IP 192.168.0.153.41858 > 192.168.0.153.162:  F=apr U=myuse [|snmp][|snmp]
10:42:33.133936 IP 192.168.0.153.162 > 192.168.0.153.41858:  F= U=myu [|snmp][|snmp]


Pourquoi y a-t-il un double envoie de message de type "inform" ?!?
 
En bref, je ne sais pas trop comment m'en sortir donc si une bonne âme peut m'aiguiller  :)  
Merci

mood
Publicité
Posté le 11-06-2010 à 10:43:20  profilanswer
 

n°2000836
gilou
Modérateur
Modzilla
Posté le 11-06-2010 à 12:23:21  profilanswer
 

La c'est un poil trop pointu pour que je réponde (apparemment, ça a pas l'air mal, ce que tu fais).
Je lis dans la doc:

Citation :

In order to support the AES Cipher Algorithm as a SNMPv3 privacy protocol, the non-core module Crypt::Rijndael is needed.


Il est bien installé, ce module?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2000943
fym37
Posté le 11-06-2010 à 15:56:43  profilanswer
 

yep, je travaille sous Debian et j'ai installé (en plus des lib snmp) :
libcrypt-des-perl libdigest-sha1-perl libdigest-hmac-perl libcrypt-rijndael-perl

n°2001906
fym37
Posté le 15-06-2010 à 17:37:45  profilanswer
 

Tout d'abord, d'après la doc de la lib Net::SNMP, l'envoie de trap en v3 n'est pas possible. Il est obligatoire de passer par des informs (traps avec ack).
Du coup, j'ai reconfigurer snmptrapd avec :

Code :
  1. createUser myuser SHA mypassword AES myotherpassword


on peut remarquer qu'il n'y a plus de EngineID. En effet, les messages inform utilisent l'engineID du serveur.
Ceci implique que la commande :

snmpinform -v 3 -u myuser -a SHA -A mypassword -x AES -X myotherpassword -l authPriv localhost 40 1.3.6.1.4.1.32569.1.2.2.1.6.1


enverra 2 informs au serveur :

  • le premier pour récupérer l'engineID
  • le second pour envoyer réellement l'info souhaité

Du coup, maintenant, l'ouverture de session réussi  :)
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [perl] envoie de trap SNMPv3

 

Sujets relatifs
envoie un mail eh PHPenigme de \n en perl
envoie du signal ctrl-dErreur lors de l'envoie d'un formulaire par mail
Perl > remplacer texte dans fichiers, recursivementExecuter fonction oracle et récupérer résultat depuis perl (DBI)
Question encapsulation debutant en Perl [HELP]Perl - Fichier Texte Sed
Perl - Tableau associatif HashManipulation de trap snmp
Plus de sujets relatifs à : [perl] envoie de trap SNMPv3


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR