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

Shell et commandes GNU Discussion :

[bash] Script dans un tableau sur Centreon


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 46
    Par défaut [bash] Script dans un tableau sur Centreon
    Bonjour à tous,

    Je souhaiterais avoir un renseignement et si possible de l'aide pour obtenir ce résultat.

    Objectif : J'ai créé un script qui permet de récupérer la température d'un commutateur, avec l'OID.
    L'objectif serait de mettre ce résultat sous format tableau sur Centreon. Est-il possible de faire ça ?

    Mon code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #!/bin/bash
     
    #####################################################
    #                                                   #
    #    Auteur  :  XXXXX                          #
    #    Date    :  Decembre 2021                       #
    #    Titre   :  check_cisco.temp.sh                 #
    #                                                   #
    #####################################################
     
     
    ### Eviter la collision des fichiers ###
    min=1
    max=999999999
    number1=$[($RANDOM % ($[$max - $min] + 1)) + $min]
    number2=$[($RANDOM % ($[$max - $min] + 1)) + $min]
     
    ### Vérification du Model de l'équipement ###
    model=$(snmpwalk -v 2c -c snmpget $1 .1.3.6.1.2.1.47.1.1.1.1.7)
     
    ### Si le Model c93 et c92 correspond à l'équipement then ..###
    if [[ $model =~ "c92" ]] || [[ $model =~ "c93" ]];then
     
            ###9300###
            ### Test du ping de l'équipement ###
            ping $1 -c1 -q 2>&1 > /dev/null
            if [ $? != 1 ];then
     
                    ### Récuperer la Température en Celsius ###
                    intval=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.3.1012 | awk '{print $4"°C"}')
                    outval=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.3.1013 | awk '{print $4"°C"}')
                    hotval=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.3.1014 | awk '{print $4"°C"}')
     
                    ### Récuperer l'indicateur OK/WARNING/CRITICAL ###
                    int=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.2.1012 | awk '{print $7,":",$10}')
                    out=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.2.1013 | awk '{print $7,":",$10}')
                    hot=$(snmpwalk -c snmpget -v 2c 10.254.254.115 .1.3.6.1.4.1.9.9.13.1.3.1.2.1014 | awk '{print $7,":",$10}')
     
     
                            ### Tester la présence de l'OID ###
                            if [[ "$cmd" =~ "No Such Instance currently exists at this OID" ]];then
                                    echo "OID non exploitable"
                                    exit 3
                            else
     
                                    echo "$int ($intval) , $out ($outval) , $hot ($hotval) "
    #                                rm -f /usr/lib/nagios/plugins/xxx/ram_$number1.txt
     
     
                            fi
     
            else
                    echo "No response from remote host \"$3\"." && exit 2
            fi
    else
            echo "Modele non integre au plugin"
     
    fi
    Résultat sous Centreon :

    Inlet : GREEN (31°C) , Outlet : GREEN (36°C) , HotSpot : GREEN (60°C)

    Envie :

    Avoir un tableau avec les trois valeurs avec les MIN,MAX

    Merci par avance,
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    je ne comprends pas ton problème : il ne s'agit que de mettre en forme tes données...

    par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    snmp()
    {
        snmpwalk -v 2c -c snmpget "$1" "$2"
    }
    parce que c'est toujours la même commande dont seuls les arguments changent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if [[ $model =~ "c92" ]] || [[ $model =~ "c93" ]
    non, parce que ça correspondera aussi avec c930 (par exemple)
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $(snmp "$1" '.1.3.6.1.2.1.47.1.1.1.1.7') == c9[23] ]
    ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ping $1 -c1 -q 2>&1 > /dev/null
    directement. pas besoin de variable intermédiaire.

    on continue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in {2..4}
    do
        snmp "$1" .1.3.6.1.4.1.9.9.13.1.3.1.3.101$i | awk '{...formatage des  données...}'
    done
    et puis $cmd n'est pas défini.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 46
    Par défaut
    Merci pour vos conseils, je vais de ce pas les appliquer.

    De plus, je voudrais savoir :
    Avec une commande snmpwalk je récupère la RAM d'un commutateur,
    Malheureusement la valeur donnée est en octet...
    Savez-vous s'il est possible avec cette commande dans un sed ou dans le awk de mettre en Gigabyte avec deux chiffres derrière la virgule ?..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [xxx@xxxxxxxxx]# snmpwalk -c snmpget -v 2c XX.XX.XXX.XX .1.3.6.1.4.1.9.2.1.8.0 | awk '{print $4}'
    1093160184
    Mon objectif :
    Je me suis renseigné, mais très compliqué à appliquer :
    octet -> Gigabyte -> 10 puissance -9

    Merci par avance,

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ octets=1093160184
    $ awk -v octets=$octets 'BEGIN{printf("%.2f\n", *10**-9)}'
    1.09
    ou avec bc
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ octets=1093160184
    $ bc -l <<<'g='$octets'*10^-9; scale=2; print g/1,"\n"'                                                                                                                                                        
    1.09
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 46
    Par défaut
    Parfait, je vais mettre ça sous forme de variable car la RAM n'est pas une valeur fixe.

    Sans mentir, je n'aurais jamais trouvé cette formule ^^

    Merci beaucoup Je te dois une pinte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    ml=$(snmpwalk -c snmpget -v 2c XX.XXX.XXX.XXX .1.3.6.1.4.1.9.2.1.8.0 | awk '{print $4}')
                    octets1=$ml
                    bc -l <<<'g='$octets1'*10^-9; scale=2; print g/1,"\n"'
                    echo Mémoire utilisé : $octects1
    Est-il possible de récupérer la ligne bc sous variable pour l'afficher dans un echo comme mon ex ?
    test=$(bc -l ...) ?

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    pourquoi octets1=$ml et pas octets=$(snmpwalk... ?

    et, tu sais mettre le résultat de la commande snmpwalk dans une variable, mais pas celui de bc ?

    qu'est-ce qui ne va pas avec ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 46
    Par défaut
    ...

    J'ai pas les mots, je vais prendre des vacances

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2003] Formule dans un tableau sur Word
    Par Didi1705 dans le forum VBA Word
    Réponses: 1
    Dernier message: 01/08/2009, 06h12
  2. insérer un script dans un tableau array
    Par leuntout dans le forum Langage
    Réponses: 6
    Dernier message: 08/01/2009, 17h35
  3. Réponses: 1
    Dernier message: 16/08/2007, 17h58
  4. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  5. Réponses: 7
    Dernier message: 02/05/2006, 11h28

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