snmpget et perl ... ou comment traiter une valeur de retour !!!
14 réponses
toon
Bonjour.
Je pense que mon soucis a deja ete partage par bon nombre d'administrateurs
desireux de superviser leur reseau informatique via SNMP, et des script
ecrit en perl.
Je desire recuperer le resultat d'un snmpget (par exemple le traffic reseau
d'un port de switch) pour le traiter et l'injecter par exemple dans une base
rrdtool.
J'ai deja trouve plein de chose sur le net (rrdtool et freebsd), mais rien
de bien precis.
Par exemple :
#!/usr/bin/perl
$target = "./snmpget -c public -Oqv 192.168.155.10
.1.3.1.2.1.2.2.1.5.10101";
$result = system($target);
#$result = $result + 1;
print "$result\n";
Le resultat du snmpget est 10000000, par contre le resultat de $result est
0, et si j'enleve l'avant derniere ligne, $result devient 1.
0 c'est quoi, le code de sortie de la commande ???
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
En effet, j'ai l'impression que les data obtenues (traffic reseau entrant et sortant sur un switch cisco) via snmpget sont divise par 10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est peut-être pas à cet endroit là ?!
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget
dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a
me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ?
Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
En effet, j'ai l'impression que les data obtenues (traffic reseau
entrant et sortant sur un switch cisco) via snmpget sont divise par
10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait
un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me
renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est
peut-être pas à cet endroit là ?!
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
En effet, j'ai l'impression que les data obtenues (traffic reseau entrant et sortant sur un switch cisco) via snmpget sont divise par 10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est peut-être pas à cet endroit là ?!
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
toon
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget. Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En effet, j'ai l'impression que les data obtenues (traffic reseau entrant et sortant sur un switch cisco) via snmpget sont divise par 10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est peut-être pas à cet endroit là ?!
Je vais continuer mes investigation dans le domaine d'RRDTOOL et de sa configuration.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget
dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a
me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ?
Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code.
Je ne vois aucune requete snmpget.
Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez
moi !!!
En effet, j'ai l'impression que les data obtenues (traffic reseau
entrant et sortant sur un switch cisco) via snmpget sont divise par
10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait
un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me
renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est
peut-être pas à cet endroit là ?!
Je vais continuer mes investigation dans le domaine d'RRDTOOL et de sa
configuration.
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
En fait, j'ai choisi la facilite en redirigeant la sortie du snmpget dans le fichier que je vais lire ensuite via perl.
En règle générale, mauvaise idée.
Oui, mais je n'y arrive pas autrement. Si vous avez une piste meilleur a me proposer, je suis tout ouiiiii !!!
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget. Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En effet, j'ai l'impression que les data obtenues (traffic reseau entrant et sortant sur un switch cisco) via snmpget sont divise par 10.
Vous êtes sûrs que vous mélangez pas octets (bytes) et bits ? Ca ferait un rapport 8.
La valeur renvoye par un snmpget sur le port d'un switch cisco me renvoit une valeur en octets (bytes) non ?!?
Je ne sais pas ce que fait Cisco, et de toute façon la confusion n'est peut-être pas à cet endroit là ?!
Je vais continuer mes investigation dans le domaine d'RRDTOOL et de sa configuration.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Patrick Mevzek
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit Net::SNMP. On instancie d'abord une variable de cette classe, et après on fait une requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En résumé: Net::Session->session() pour se ``connecter'' en SNMP puis get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer les valeurs, qu'on obtient dans une référence de tableau associatif renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la lecture/écriture au format RRD).
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Le code présent dans mon post précédent ne suffit pas ? Si quelque
chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune
requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit
Net::SNMP.
On instancie d'abord une variable de cette classe, et après on fait une
requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ...
excusez moi !!!
En résumé:
Net::Session->session() pour se ``connecter'' en SNMP
puis
get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer
les valeurs, qu'on obtient dans une référence de tableau associatif
renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec
RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la
lecture/écriture au format RRD).
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit Net::SNMP. On instancie d'abord une variable de cette classe, et après on fait une requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En résumé: Net::Session->session() pour se ``connecter'' en SNMP puis get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer les valeurs, qu'on obtient dans une référence de tableau associatif renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la lecture/écriture au format RRD).
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
toon
OK ... ca calme !!! Merci pour l'info ... je vais explorer le module perl de NET:SNMP alors. Mais c'est vrai que c'est pas evident, car les exemples ne sont pas ecrit de maniere tres lisible et comprehensible par un bleu en perl comme moi !!!
Dans tous les cas, merci pour vos reponses et pour leurs rapidite ;- >
"Patrick Mevzek" a écrit dans le message de news:
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit Net::SNMP. On instancie d'abord une variable de cette classe, et après on fait une requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En résumé: Net::Session->session() pour se ``connecter'' en SNMP puis get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer les valeurs, qu'on obtient dans une référence de tableau associatif renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la lecture/écriture au format RRD).
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
OK ... ca calme !!!
Merci pour l'info ... je vais explorer le module perl de NET:SNMP alors.
Mais c'est vrai que c'est pas evident, car les exemples ne sont pas ecrit de
maniere tres lisible et comprehensible par un bleu en perl comme moi !!!
Dans tous les cas, merci pour vos reponses et pour leurs rapidite ;- >
"Patrick Mevzek" <pm-N200412@nospam.dotandco.com> a écrit dans le message de
news: pan.2004.12.10.16.00.49.35069.1391@nospam.dotandco.com...
Le code présent dans mon post précédent ne suffit pas ? Si quelque
chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune
requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit
Net::SNMP.
On instancie d'abord une variable de cette classe, et après on fait une
requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ...
excusez moi !!!
En résumé:
Net::Session->session() pour se ``connecter'' en SNMP
puis
get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer
les valeurs, qu'on obtient dans une référence de tableau associatif
renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec
RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la
lecture/écriture au format RRD).
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
OK ... ca calme !!! Merci pour l'info ... je vais explorer le module perl de NET:SNMP alors. Mais c'est vrai que c'est pas evident, car les exemples ne sont pas ecrit de maniere tres lisible et comprehensible par un bleu en perl comme moi !!!
Dans tous les cas, merci pour vos reponses et pour leurs rapidite ;- >
"Patrick Mevzek" a écrit dans le message de news:
Le code présent dans mon post précédent ne suffit pas ? Si quelque chose n'est pas clair, demandez, c'est du Perl :-)
Et bien justement, non, je ne saisie pas tout le code. Je ne vois aucune requete snmpget.
Le code utilise directement la bibliothèque parle qui fait du SNMP, soit Net::SNMP. On instancie d'abord une variable de cette classe, et après on fait une requête (->get_request()), et on explore la réponse.
Regardez la doc de Net::SNMP aussi il devrait y avoir des exemples.
Beaucoup de declaration de variables ... bref c'est un peu flou ... excusez moi !!!
En résumé: Net::Session->session() pour se ``connecter'' en SNMP puis get_request() pour envoyer un ou plusieurs OIDs dont on veut récupérer les valeurs, qu'on obtient dans une référence de tableau associatif renvoyée par get_request().
Après on en fait ce qu'on veut, par exemple mise dans un RRD avec RRDs::update (tirée de la bibliothèque Perl RRDs qui s'occupe de la lecture/écriture au format RRD).
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>