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 :

Script shell - datacore - problème


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut Script shell - datacore - problème
    Bonjour à toutes et à tous,

    Suite à la mise en place d'un outil de supervision, je dois créer des scripts pour interroger mes OIDs de mes datacore et les intégrer à ma supervision.

    Je débute en shell, voici 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
    #! /bin/sh
     
    STATE=2
    PLUGIN_PATH='/srv/eyesofnetwork/nagios/plugins'
    COMMAND_PATH='/bin'
     
       ####################################### Resultats #########################################
     
       #### valeur pour up to date du vDISK PRODUCTION ####
     
    tab=(
    '.32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70'
    '.32.56.67.65.55.51.51.67.54.67.54.55.55.54.52.65.52.56.55.52.67.50.52.56.50.56.54.53.52.69.54.55.70'
    '.32.68.66.69.56.65.53.54.70.66.49.70.54.57.69.52.65.68.50.69.52.67.53.52.68.67.51.51.48.70.49.57.48'
    '.32.54.55.66.67.52.51.53.67.69.57.50.55.57.57.57.67.55.56.66.48.54.65.57.67.51.65.66.57.54.70.69.54'
    '.32.51.56.56.66.67.68.68.51.53.69.65.57.54.50.69.53.55.69.48.65.52.69.53.68.57.54.50.53.56.48.55.49'
    '.32.54.52.67.56.67.65.55.57.70.53.69.49.70.68.53.51.67.50.50.53.70.48.65.49.68.50.70.65.70.52.49.65'
    '.32.52.65.70.69.68.53.53.68.48.50.53.55.49.55.54.68.57.49.49.53.70.57.51.65.51.57.69.69.65.52.57.55'
    '.32.51.56.54.57.53.67.50.52.70.51.56.55.50.65.66.54.52.70.54.50.65.65.56.55.51.65.51.67.49.70.49.53'
    '.32.66.53.69.52.65.57.49.70.69.54.53.51.69.51.66.65.65.66.70.48.57.70.51.53.51.65.67.51.50.57.56.69'
    '.32.52.67.53.52.69.50.68.65.68.69.66.56.66.67.48.49.56.54.50.55.67.56.56.69.51.67.69.51.49.68.70.56'
       )
     
    if [[ $4 = status && $6 -eq 1 || $6 -eq 2 ]]
    then
    for ((n=0; n < 11; n++))
    do
    	ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
    	if [[ (("${ar[n]}" == "Up")) ]] ; then
    	STATE=0
    	else
    	STATE=2
    	fi
    done
     
    rslt_affiche="PRODUCTION_01 est $ar & PRODUCTION_02 est ${ar[1]} & PRODUCTION_03 est ${ar[2]} & PRODUCTION_04 est ${ar[3]} & PRODUCTION_05 est ${ar[4]} & PRODUCTION_06 est ${ar[5]} & PRODUCTION_07 est ${ar[6]} & PRODUCTION_08 est ${ar[7]} & PRODUCTION_09 est ${ar[8]} & PRODUCTION_10 est ${ar[9]}"
    fi
     
    if [[ ($4 == status) ]] ; then #affichage sur le nagios
       $PLUGIN_PATH/check_dummy $STATE "$rslt_affiche"
    fi
       exit $STATE
    Mon problème actuel

    Mon script retourne toujours l'état "CRITIQUE" alors que tous mes vdisk sont UP.

    Je pense que le problème vient de là (mon if dans ma boucle retourne la valeur STATE=2, elle arrive pas à lire mon if) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if [[ (("${ar[n]}" == "Up")) ]] ; then
    	STATE=0
    	else
    	STATE=2
    	fi
    J'ai testé plusieurs choses mais je n'arrive pas à corriger ce problème :/

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Salut,

    Je ne sais pas si tu as essayé de faire des plugins en perl.
    Pour ma part, je trouve que débuguer du perl est plus facile que bash : des types, des déclarations, des erreurs éloquentes. Tout ça aide bien à y voir clair.

    Ton code m'est difficile à lire.

    ton n varie vraiment dans ta boucle ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par ggnore Voir le message
    Salut,

    Je ne sais pas si tu as essayé de faire des plugins en perl.
    Pour ma part, je trouve que débuguer du perl est plus facile que bash : des types, des déclarations, des erreurs éloquentes. Tout ça aide bien à y voir clair.

    Ton code m'est difficile à lire.

    ton n varie vraiment dans ta boucle ?
    J'ai essayé le perl et je n'y arrivais pas :/

    dans ma boucle, j'ai attribué:

    ar+=
    Je souhaite tester toutes mes OIDs qui sont défini dans mon "tab=" puis incrémenter à chaque fois qu'un test est fini

    Mon problème :

    if [[ (${ar[$n]} = "Up") ]] ; then
    STATE=0
    else
    STATE=2
    fi
    Lorsque j'ai mis :

    echo "${ar[n]}"
    J'ai bien mes 10 valeurs qui sortent

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    les parenthèses sont inutiles dans un test.

    les parenthèses doubles effectue une évaluation arithmétique.
    "Up" n'étant pas un nombre, il est évalué à zéro !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    les parenthèses sont inutiles dans un test.

    les parenthèses doubles effectue une évaluation arithmétique.
    "Up" n'étant pas un nombre, il est évalué à zéro !
    Que me conseils-tu ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut

    d'enlever les parenthèses !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par N_BaH Voir le message

    d'enlever les parenthèses !
    Oui je l'avais compris pour ceci, mais le reste? :/

    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
     
    if [[ $4 = status && $6 -eq 1 || $6 -eq 2 ]]
    then
    for ((n=0; n < 11; n++))
    do
    	ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
    	if [[ ${ar[n]} == "Up" ]] ; then
    	STATE=0
    	else
    	STATE=2
    	fi
    done
     
    rslt_affiche="PRODUCTION_01 est $ar & PRODUCTION_02 est ${ar[1]} & PRODUCTION_03 est ${ar[2]} & PRODUCTION_04 est ${ar[3]} & PRODUCTION_05 est ${ar[4]} & PRODUCTION_06 est ${ar[5]} & PRODUCTION_07 est ${ar[6]} & PRODUCTION_08 est ${ar[7]} & PRODUCTION_09 est ${ar[8]} & PRODUCTION_10 est ${ar[9]}"
    fi
     
    if [[ ($4 == status) ]] ; then #affichage sur le nagios
       $PLUGIN_PATH/check_dummy $STATE "$rslt_affiche"
    fi
       exit $STATE

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    tu dis qu'avec echo "{ar[n]}", tes "dix valeurs sortent", mais elles sortent quoi ?
    seulement "Up" ?

    en dehors de la boucle seul le dernier STATE sera affiché.

    et puis, c'est pas beau grep | cut|cut|cut|cut|cut... !
    à quoi ressemble le résultat du check_snmp ? on va te faire un petit awk bien propre.

    NB : c'est pas une très bonne pratique de poster le même sujet sur plusieurs forums.
    on ne sait pas qui intervient, avec quelles directives, à quel moment des modifications...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Yep elles me sortent "UP" et je souhaite ensuite tester si TOUT mes vdisk, si tous "UP" = OK, si un vdisk ne donne rien alors = critical.

    Oui pas très esthétique mes plusieurs cut xD je suis débutant :c

    Si je lance le check_snmp, la valeur me donne :

    SNMP OK - "Up to date" |
    Justement je mets à jour pour éviter de se mélanger les pinceaux !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Si je lance le check_snmp, la valeur me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SNMP OK - "Up to date" |
    pourquoi ne pas tester cette chaîne alors, simplement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if test "${ar[n]}" = 'SNMP OK - "Up to date" |'; then ...
    quelle pourraient-être les autres chaînes retournées par check_snmp ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Bonjour,

    Ton premier if est affreux car susceptible de sortir une erreur de syntaxe si par exemple $6 est vide

    Que t'affiche:
    Cordialement.

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Je ne sais pas si ça peut aider, mais voici ce que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ]$ tab=(
    > '.32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70'
    > '.32.56.67.65.55.51.51.67.54.67.54.55.55.54.52.65.52.56.55.52.67.50.52.56.50.56.54.53.52.69.54.55.70'
    > '.32.68.66.69.56.65.53.54.70.66.49.70.54.57.69.52.65.68.50.69.52.67.53.52.68.67.51.51.48.70.49.57.48'
    > '.32.54.55.66.67.52.51.53.67.69.57.50.55.57.57.57.67.55.56.66.48.54.65.57.67.51.65.66.57.54.70.69.54'
    > '.32.51.56.56.66.67.68.68.51.53.69.65.57.54.50.69.53.55.69.48.65.52.69.53.68.57.54.50.53.56.48.55.49'
    > '.32.54.52.67.56.67.65.55.57.70.53.69.49.70.68.53.51.67.50.50.53.70.48.65.49.68.50.70.65.70.52.49.65'
    > '.32.52.65.70.69.68.53.53.68.48.50.53.55.49.55.54.68.57.49.49.53.70.57.51.65.51.57.69.69.65.52.57.55'
    > '.32.51.56.54.57.53.67.50.52.70.51.56.55.50.65.66.54.52.70.54.50.65.65.56.55.51.65.51.67.49.70.49.53'
    > '.32.66.53.69.52.65.57.49.70.69.54.53.51.69.51.66.65.65.66.70.48.57.70.51.53.51.65.67.51.50.57.56.69'
    > '.32.52.67.53.52.69.50.68.65.68.69.66.56.66.67.48.49.56.54.50.55.67.56.56.69.51.67.69.51.49.68.70.56'
    >    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $ for ((n=0; n < 11; n++)); do echo "$n: ${tab[n]}"; done
    0: .32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70
    1: .32.56.67.65.55.51.51.67.54.67.54.55.55.54.52.65.52.56.55.52.67.50.52.56.50.56.54.53.52.69.54.55.70
    2: .32.68.66.69.56.65.53.54.70.66.49.70.54.57.69.52.65.68.50.69.52.67.53.52.68.67.51.51.48.70.49.57.48
    3: .32.54.55.66.67.52.51.53.67.69.57.50.55.57.57.57.67.55.56.66.48.54.65.57.67.51.65.66.57.54.70.69.54
    4: .32.51.56.56.66.67.68.68.51.53.69.65.57.54.50.69.53.55.69.48.65.52.69.53.68.57.54.50.53.56.48.55.49
    5: .32.54.52.67.56.67.65.55.57.70.53.69.49.70.68.53.51.67.50.50.53.70.48.65.49.68.50.70.65.70.52.49.65
    6: .32.52.65.70.69.68.53.53.68.48.50.53.55.49.55.54.68.57.49.49.53.70.57.51.65.51.57.69.69.65.52.57.55
    7: .32.51.56.54.57.53.67.50.52.70.51.56.55.50.65.66.54.52.70.54.50.65.65.56.55.51.65.51.67.49.70.49.53
    8: .32.66.53.69.52.65.57.49.70.69.54.53.51.69.51.66.65.65.66.70.48.57.70.51.53.51.65.67.51.50.57.56.69
    9: .32.52.67.53.52.69.50.68.65.68.69.66.56.66.67.48.49.56.54.50.55.67.56.56.69.51.67.69.51.49.68.70.56
    10:
    Je propose de remplacer for ((n=0; n < 11; n++)) par for ((n=0; n < ${#tab[@]}; n++)).

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Autre remarque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $4 = 'status' && $6 -eq 1 || $6 -eq 2 ]]
    est équivalent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ ($4 = 'status' && $6 -eq 1) || $6 -eq 2 ]]
    Ne voudrais-tu pas plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $4 = 'status' && ($6 -eq 1 || $6 -eq 2) ]]

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Re-de plus, je voudrais attirer ton attention sur le statut de sortie.
    Actuellement, la variable STATE est écrasée à chaque tour de boucle.
    Donc elle prend pour valeur celle obtenue pour n=11, qui est hors limite.
    Donc elle vaut probablement toujours 2 (qui doit correspondre à ce que tu appelles état "CRITIQUE").

    Avec ma première correction proposée, la variable STATE prendrait pour valeur celle obtenue pour n=10, c'est-à-dire le statut du dernier vdisk.

    Or, sémantiquement, j'imagine que tu veux que la variable STATE passe en critique, si au moins un des vdisks n'est pas UP.

    Dans ce cas, il faudrait remplacer le code par:
    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
    #! /bin/sh
     
    STATE_OK=0
    STATE_CRITIQUE=2
     
    STATE=${STATE_OK}
    PLUGIN_PATH='/srv/eyesofnetwork/nagios/plugins'
    COMMAND_PATH='/bin'
     
    ####################################### Resultats #########################################
     
    #### valeur pour up to date du vDISK PRODUCTION ####
     
    tab=(
        '.32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70'
        '.32.56.67.65.55.51.51.67.54.67.54.55.55.54.52.65.52.56.55.52.67.50.52.56.50.56.54.53.52.69.54.55.70'
        '.32.68.66.69.56.65.53.54.70.66.49.70.54.57.69.52.65.68.50.69.52.67.53.52.68.67.51.51.48.70.49.57.48'
        '.32.54.55.66.67.52.51.53.67.69.57.50.55.57.57.57.67.55.56.66.48.54.65.57.67.51.65.66.57.54.70.69.54'
        '.32.51.56.56.66.67.68.68.51.53.69.65.57.54.50.69.53.55.69.48.65.52.69.53.68.57.54.50.53.56.48.55.49'
        '.32.54.52.67.56.67.65.55.57.70.53.69.49.70.68.53.51.67.50.50.53.70.48.65.49.68.50.70.65.70.52.49.65'
        '.32.52.65.70.69.68.53.53.68.48.50.53.55.49.55.54.68.57.49.49.53.70.57.51.65.51.57.69.69.65.52.57.55'
        '.32.51.56.54.57.53.67.50.52.70.51.56.55.50.65.66.54.52.70.54.50.65.65.56.55.51.65.51.67.49.70.49.53'
        '.32.66.53.69.52.65.57.49.70.69.54.53.51.69.51.66.65.65.66.70.48.57.70.51.53.51.65.67.51.50.57.56.69'
        '.32.52.67.53.52.69.50.68.65.68.69.66.56.66.67.48.49.56.54.50.55.67.56.56.69.51.67.69.51.49.68.70.56'
    )
     
    if [[ $4 = status && ($6 -eq 1 || $6 -eq 2) ]]
    then
        for ((n=0; n < ${#tab[@]}; n++))
        do
    	ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
    	if [[ "${ar[n]}" != "Up" ]] ; then
    	    STATE=${STATE_CRITIQUE}
    	fi
        done
     
        rslt_affiche="PRODUCTION_01 est $ar & PRODUCTION_02 est ${ar[1]} & PRODUCTION_03 est ${ar[2]} & PRODUCTION_04 est ${ar[3]} & PRODUCTION_05 est ${ar[4]} & PRODUCTION_06 est ${ar[5]} & PRODUCTION_07 est ${ar[6]} & PRODUCTION_08 est ${ar[7]} & PRODUCTION_09 est ${ar[8]} & PRODUCTION_10 est ${ar[9]}"
    fi
     
    if [[ $4 = status ]] ; then #affichage sur le nagios
        $PLUGIN_PATH/check_dummy $STATE "$rslt_affiche"
    fi
    exit $STATE

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Merci de ta réponse, je vais tester cela, je vous tiens au jus.

    Je vous remercie de m'aider, vous êtes géniaux !

    Continuez comme ça !

    Edit : Script en place, tout marche impec, là je vais me lancé dans les conditions pour faire des seuils d'alertes ^^

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut script pour les seuils
    Bonsoir,

    Actuellement je suis en train de faire un script pour faire les seuils d'alertes, j'ai pensé à ceci ?


    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
    #! /bin/sh
     
    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITIQUE=2
     
    STATE=${STATE_OK}
    PLUGIN_PATH='/srv/eyesofnetwork/nagios/plugins'
    COMMAND_PATH='/bin'
     
    ####################################### Resultats #########################################
     
    #### valeur pour up to date du vDISK PRODUCTION ####
     
    tab=(
        '.32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70'
    )
     
    if [[ $4 = status && ($6 -eq 1 || $6 -eq 2) ]]
    then
        for ((n=0; n < ${#tab[@]}; n++))
        do
    	ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
    	if [[ "${ar[n]}" != "0" ]] ; then
    	    STATE=${STATE_WARNING}
            elif [[ "${ar[n]}" >= 2 ]] ; then
                STATE=${STATE_CRITIQUE}
    	fi 
        done
     
        rslt_affiche="PRODUCTION_01 est $ar"
    fi
    Qu'en pensez-vous ?

  17. #17
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    J'insiste,
    J'ai un fort doute sur ce que te retourne cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
    Pourquoi le + avant le signe égal ?
    Potentiel souci avec les ouvertures et fermetures de guillemets...
    Cordialement.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Pourquoi le + avant le signe égal ?
    Potentiel souci avec les ouvertures et fermetures de guillemets...
    + pour l'incrémentation, au niveau des guillemets je n'ai aucun soucis puis si j'oublie un guillemet je vais le voir direct :p

    Et mon check_snmp me permet de d'avoir d'avoir ceci à la fin :

    Nom : Zm02K1b.png
Affichages : 112
Taille : 773 octets

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Potentiel souci avec les ouvertures et fermetures de guillemets...
    non, pas de problème : il y en a à l'extérieur de la substitution de commande, qui est un "contexte" différent, et tout à fait normalement à l'intérieur.

    pour ma part, je persiste à dire que cet enchainement de commande est inutile.
    et que le retour de la commande seule pourrait être testé.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 32
    Points : 12
    Points
    12
    Par défaut
    Là, je suis en train de voir pour récupérer les valeurs en temps réel des espaces disques restant mais mes OIDs que j'ai récupéré me l'indique pas xD

Discussions similaires

  1. script shell: problème avec le caractère espace
    Par Le fut dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/05/2017, 11h49
  2. problème script shell
    Par jeje69 dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 09/01/2008, 14h30
  3. problème sur script shell
    Par cyranno dans le forum Linux
    Réponses: 1
    Dernier message: 11/12/2007, 16h19
  4. Petit problème de script shell
    Par Mainman dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 08h07
  5. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54

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