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

Linux Discussion :

Lire du SNMP en shell


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Lire du SNMP en shell
    Je cherche pour mettre tant que plugin centréon pour nagios un script qui va lire le MIB d'une adresse snmp sur un switch (en l'occurrence le numéro de série).

    J'ai écris le script suivant en m'inspirant d'un autre, mais ça ne fonctionne pas...

    #!/bin/sh
    #settings
    # $1 : host address
    # $2 : community
    # $3 : port

    if [$# -ne 3] ; then
    #message d'erreur
    echo "using : $0 <host_address> <community> <port>"
    exit $UNKOWN
    fi

    Etat=`snmpwalk $1 -c $2 -v 2c .1.3.6.1.4.1.9.5.1.2.1.9.$3 | cut -d " " -f4`
    echo $Etat

    Voilà, pardonner mes difficultés, je débute, et la j'ai de gros doutes sur la fin de la ligne snmpwalk à partir de cut -d car je ne vois pas à quoi cela correspond, j'ai repris ça sur un modèle...
    Merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    donne la commande snmpwalk que tu souhaites réaliser avec host address, community et port.

    j ai vu cela :
    command = `snmpwalk -c #{community} -v 2c #{host} .1.3.6.1.4.1.289.2.1.1.2.3.1.1.2`



    sinon des espaces sont a rajouter dans le test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ $# -ne 3 ] ; then
    echo "using : $0 <host_address> <community> <port>"
    fi
    => snmp
    using : snmp <host_address> <community> <port>
    => snmp 1 2 3
    =>

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    La commande que j'utilise sous un terminal Unix est "snmpwalk -v 2c -c public 172.16.8.10 .1.3.6.1.4.1.9.5.1.2.19"

    Cette commande renvoi le numéro de série du switch

    J'ai évolué le programme:
    #!/bin/sh
    #settings
    # $1 : host address
    # $2 : community
    # $3 : port

    if [ $# -ne 3 ] ; then
    #message d'erreur
    echo "using : $0 <host_address> <community> <port>"
    exit $UNKOWN
    fi

    Etat=`snmpwalk $1 -c $2 -v 2c .1.3.6.1.4.1.9.5.1.2.1.9.$3 | cut -d " " -f4`
    echo $Etat

    Alors ça me renvoi "such" (en tapant ./nom_prog)

    Et en mettant le port ($3) avant l'IP dans snmpwalk, j'ai tout une série de problèmes...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    Citation Envoyé par JayRem__25 Voir le message
    La commande que j'utilise sous un terminal Unix est "snmpwalk -v 2c -c public 172.16.8.10 .1.3.6.1.4.1.9.5.1.2.19"
    dans ce cas tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Etat=`snmpwalk -v 2c -c $2 $1 .1.3.6.1.4.1.9.5.1.2.19`

    Je comprends pas trop ce que vient faire le pipe/cut dans la commande, ni ou tu te sers de de ton port.
    Tu as un problème au niveau de ton script ou au niveau de ta commande ? Ou plutot, est ce que tu arrive a le faire marcher en lançant les commandes a la main ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai enlevé le port, je sais pas ce que ça fichait sur celui que j'avais récupéré, j'ai modifié comme tu m'as dis et ça fonctionne, merci beaucoup!!!

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par JayRem__25 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Etat=`snmpwalk $1 -c $2 -v 2c .1.3.6.1.4.1.9.5.1.2.1.9.$3 | cut -d " " -f4`
    echo $Etat
    Attention aux noms de variables. Bien sûr t'as le droit d'appeler ta variable "Etat" ou "trougoudlou" mais généralement, on donne des noms qui montrent qu'on sait ce qu'on manipule.

    Ici, manifestement, ta commande "snmpwalk" est filtrée pour en extraire le 4° mot qui représente pour toi une info quelconque à traiter. Tu pourrais donc appeler ta variable "info".

    Le problème avec "Etat" c'est que l'état d'un programme est clairement défini en shell comme son code retour, c.a.d. un nombre compris entre 0 et 255 où 0 signifie "ok" et tout autre chiffre signifie "le programme s'est terminé en erreur".
    Cet état est récupérable par la variable $? ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
    rm fichier_truc
    etat=$?
    if test $etat -eq 0
    then
        echo "fichier_truc a bien été effacé"
    else
        echo "fichier_truc n'a pas pu être effacé => code retour $etat"
    fi
    Donc c'est malhabile d'appeler ta variable "Etat" alors qu'elle ne récupère absolument pas l'état de snmpwalk...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    j avais meme pas réalisé le cut
    oui effectivement si tu veux récupérer qu une seule info (entre autre la 4ème) de ce que renvoie la commande c est ce qu il faut

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2008, 21h02
  2. Lire du xml avec shell
    Par rootdaoud dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/10/2007, 16h19
  3. script shell : lire un fichier et donner pour traitement au script
    Par pc974 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 14/05/2007, 14h38
  4. Shell, lire une entrée clavier
    Par manuaccess10 dans le forum Linux
    Réponses: 8
    Dernier message: 01/06/2006, 22h01
  5. Lire un fichier en korn shell
    Par declencher dans le forum Linux
    Réponses: 5
    Dernier message: 23/03/2005, 15h30

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