5505 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Comment charger / ajouter une MIB à snmpget / snmpwalk ? Comment obtenir un OID à partir d'un nom ?

    Sur l'iDRAC d'un serveur Dell, je veux récupérer l'état d'un composant en utilisant le protocole SNMP. Dell complète les bases de données standardisées interrogeables en SNMP avec la sienne (ce qu'on nomme un module MIB, l'ensemble des bases de données agrégées sous forme arborescente est nommée MIB).



    Première question : comment connaître l'OID (l'identifiant unique) d'un objet défini dans un module MIB afin de le consulter en SNMP ?

    Généralement, chercher le nom de l'objet sur un moteur de recherche web suffit. Dans mon cas, chercher « systemStateIDSDMCardDeviceStatusList » conduit à des résultats fort bien présentés : oidref et observium.org. L'OID est 1.3.6.1.4.1.674.10892.5.4.200.10.1.61

    Mais si l'on veut trouver par nous-même, au cas où une MIB ne soit pas aussi bien indexée ?

    Le début d'un OID est normalisé : .1.3.6.1. .1.3.6.1.2.1 pour la très populaire MIB-II. .1.3.6.1.4.1 pour les sociétés commerciales privées. Mais la suite dépend de Dell (dans mon cas).

    On peut télécharger la MIB et l'étudier avec un éditeur de texte. On cherche notre objet par son nom (« systemStateIDSDMCardDeviceStatusList » dans mon cas). On lit « ::= { systemStateTableEntry 61 } ». Cet objet a donc l'ID 61 relativement à l'objet « systemStateTableEntry ». On remonte l'arborescence : l'objet « systemStateTableEntry » a l'ID 1 relativement à l'objet « systemStateTable » qui, lui-même, a l'ID 10 relativement à l'objet « systemStateGroup » qui a l'ID 1.3.6.1.4.1.674.10892.5.4.200. L'OID absolu que nous cherchons est donc 1.3.6.1.4.1.674.10892.5.4.200 + .10.1.61 + .1 soit 1.3.6.1.4.1.674.10892.5.4.200.10.1.61.1. Pourquoi j'ai ajouté un « 1 » à la fin ? Car c'est comme ça que l'on consulte la case d'un tableau en SNMP.

    Et si l'on n'a pas envie de s'embêter avec ce que je viens de raconter ? On utilise le logiciel snmptranslate de la trousse à outils net-snmp (nom du paquet Debian : snmp). Tout est dans la documentation, mais je vais répéter :

    • Trouver les endroits où sont stockées les modules MIB : snmptranslate -Dinit_mib .1.3 2>&1 | grep MIBDIR. Sous Debian, il y a des chemins dans /usr/share (si l'on dépose une MIB dedans, le dossier ne sera pas supprimé quand on supprimera le paquet snmp…) et ~/.snmp/mibs ;

    • Créons donc ce deuxième dossier : mkdir -p ~/.snmp/mibs ;

    • On télécharge la MIB IDRAC-MIB-SMIv2 et on la dépose dans le dossier créé à l'étape précédente ;

    • Ce module MIB dépend d'autres modules MIB. Il faut donc les installer, sinon on aura les erreurs « Cannot find module (SNMPv2-SMI): At line 39 in /home/guigui/.snmp/mibs/IDRAC-MIB-SMIv2.mib », « Cannot find module (SNMPv2-TC): At line 41 in /home/guigui/.snmp/mibs/IDRAC-MIB-SMIv2.mib », « Undefined identifier: enterprises near line 146 of /home/guigui/.snmp/mibs/IDRAC-MIB-SMIv2.mib » et le bout de MIB de Dell ne sera pas chargé (« Unlinked OID in IDRAC-MIB-SMIv2: dell ::= { enterprises 674 } »). Pour récupérer les autres MIBs avec Debian, il faut installer le paquet non-free snmp-mibs-downloader car tous les modules MIB ne sont pas libres. Les MIBs seront téléchargées durant l'installation du paquet ;

    • On peut enfin convertir un nom en OID : snmptranslate -IR -On IDRAC-MIB-SMIv2:systemStateIDSDMCardDeviceStatusList.



    Deuxième question : comment charger / ajouter une MIB à snmpget / snmpwalk afin d'utiliser le nom d'un objet pour y accéder ?

    Nous venons de faire cela pour répondre à la question précédente.

    Nous pouvons récupérer la valeur d'un objet à partir de son nom : snmpget -v2c -c <COMMUNAUTÉ> <nom_DNS_iDRAC> IDRAC-MIB-SMIv2:systemStateIDSDMCardDeviceStatusList.1 (là non plus, on n'oublie pas le « .1 » final afin d'entrer dans la case du tableau).

    On peut toujours récupérer la valeur de l'objet à partir de l'OID qu'on a trouvé ci-dessus : snmpget -v2c -c <COMMUNAUTÉ> <nom_DNS_iDRAC> 1.3.6.1.4.1.674.10892.5.4.200.10.1.61.1.

    Et si l'on veut que snmpget / snmpwalk résolvent le nom d'un OID pour nous ? snmpwalk -m +IDRAC-MIB-SMIv2 -v2c -c <COMMUNAUTÉ> <nom_DNS_iDRAC> 1.3.6.1.4.1.674.10892.5.4.200.10.1. Et si préciser « -m +IDRAC-MIB-SMIv2 » est trop pénible, tu remplaces la ligne « mibs : » par « mibs +IDRAC-MIB-SMIv2 » dans /etc/snmp/snmp.conf.

    Sun Jan 17 23:49:20 2021 - permalink -
    - http://shaarli.guiguishow.info/?spCirA
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community