Bonjour,
[PC linux Ubuntu 18.04, tcl et tk 8.6, Tnm3.1.0]
Je souhaite créer un petit gestionnaire réseau. Pour l'instant, j'interroge mon client snmp local (snmpd). Avec le protocole snmpv2c tout fonctionne. Je souhaite passer maintenant au protocole v3. J'ai donc créer un utilisateur userV3 avec une authentification SHA et un cryptage DES. Plusieurs méthodes pour poller mon PC :
1/ la commande en ligne
Elle fonctionne très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /usr/bin/snmpget -u userDesV3 -v3 -a SHA -A cesnac_SNMPV3 -x DES -X cesnac_SNMPV3 localhost .1.3.6.1.2.1.1.9.1.4.11 SNMPv2-MIB::sysORUpTime.11 = Timeticks: (930) 0:00:09.30
2/ la même commande en ligne utilisée dans mon programme tcl, "en mode asynchrone"
Elle fonctionne très bien.
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 proc lectureNotif { trap } { global termine if { [ catch { set paquet [ read $trap ] } err ] } { syslog debug "LectureTrap : rupture de connexion $err" set termine 1 } else { if {$paquet!=""} { syslog info "snmpv3 : $paquet" } else { syslog info "snmpv3 : on sort" set termine 1 return } } } set requete "/usr/bin/snmpget -u userDesV3 -v3 -a SHA -A xxxxx_SNMPV3 -x DES -X xxxxx_SNMPV3 localhost .1.3.6.1.2.1.1.9.1.4.11" set notif [ open "| $requete" r ] fileevent $notif readable { lectureNotif $notif } fconfigure $notif -blocking no vwait termine
3/ Enfin l'utilisation des paquets Tnm en mode asynchrone
Et là ça ne marche pas !, je reçois la réponse au bout de 3 secondes : noResponse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 package require Tnm proc walkproc {version s stat vbl} { if {$stat == "noError"} { syslog info "$version : $s [Tnm::snmp value $vbl 0] ; [Tnm::snmp value $vbl 1]" } else { syslog info "$version : $s $stat" } } set s [Tnm::snmp generator -address localhost -version SNMPv3 -user userDesV3 \ -authPassWord xxxxx_SNMPV3 -privPassWord xxxxx_SNMPV3 -authKey SHA -privKey DES ] $s get {.1.3.6.1.2.1.1.9.1.4.11} { walkproc "testGetV3" %S %E "%V" } } Tnm::snmp wait
Voilà mon problème, alors oui je pourrai m'en passer, mais je suis têtu... Et puis utiliser Tnm aurait plus de gueule que de lancer constamment des process via exec...
Merci pour un dépannage ou une orientation.
Partager