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 pour check


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut Script pour check
    Bonjour tout le monde,

    j'ai besoin d'un script qui surveille la parition linux /system/info

    pouvez-vous m'aider à adapter/corriger le script svp

    si ça dépasse 70 affiche warning sinon si ça dépasse 90 affiche criticall

    y a quelqu'un qui peut rendre cet homme content !!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Bonjour,

    df devrait n'être exécuté qu'une fois, et le résultat découpé en variables (et encore...)

    à quoi ressemble la sortie de df -h pour que tu ne puisses pas faire df -h /system/info ?

    sh c'est bash, ou (d)ash ?

    le = d'un test effectue une comparaison lexicale, et non arithmétique.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    en fait l'idée c'est faire un df -h /system/info et puis si ça dépasse 70% affiche warning sinon si ça dépasse 90% affiche criticall

    le variable free affiche le pourcentage "disponible"

    avez-vous une vision sur l'amélioration de ce script

    merci bcp d'avance

  4. #4
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Bonsoir,

    Erreur de syntaxe sur :
    Je te conseille de faire sauter le % avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FREE=${FREE%\%]} # supprime le caractere à droite de la variable (cf man bash)
    Comme ça, tu peux tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ $FREE -gt 40 ]] ; then
        echo "tres bien"
    elif  [[ $FREE -gt 20 ]] ; then
        echo "bien"
    else
       echo "moins bien!"
    fi

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ $FREE -gt 40 ]] ; then
        echo "tres bien"
    elif  [[ $FREE -gt 20 ]] ; then
        echo "bien"
    else
       echo "moins bien!"
    fi
    [/quote]

    Merci bcp pour ce script

    en fait dans ce cas là

    c'est c'est 40 c bien sinon 20 c'est moins bien or le but c'est si ça dépasse 70% affiche warning sinon si ça dépasse 90% affiche critical donc entre 0% et 70% c 'est OK par contre entre 70 et 90 c warning et 90 et 100 %c'est le message criticall

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    les crochets doubles sont inutiles, un simple test est suffisant.

    le but c'est si ça dépasse 70% affiche warning sinon si ça dépasse 90% affiche critical donc entre 0% et 70% c 'est OK par contre entre 70 et 90 c warning et 90 et 100 %c'est le message criticall
    tu adaptes l'exemple de BlaireauOne à tes besoins !!!

    lis un tuto sur la programmation shell !
    il y en a un dans ma signature. Sauras-tu lequel c'est ?
    àmha, la lecture des deux ne te sera pas nocive.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    merci n_bah je vais m'inspirer de tes liens pour le perfectionnement

    entre temps après que je serai expert peux-tu me dire comment je peux faire une boucle pour le pourcentage ?

    j'ai cet erreur ( parce que le variable sort un pourcentage ) :

    ./script.sh: line 15: [[: 19%: syntax error: operand expected (error token is "%")
    ./script.sh: line 17: [[: 19%: syntax error: operand expected (error token is "%")
    le but c'est :

    entre 0% et 70% >> bien
    entre 70% et 90% >> moins bien

    entre 90% et 100% >> attention

    merci pour vos aides et vos conseils

  8. #8
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Bonjour,

    Désolé, il y avait une coquille dans ma commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FREE=${FREE%\%} 
    et non pas
    FREE=${FREE%\%]}
    ça explique tes erreurs de syntaxe.

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    en fait le but c'est de faire un df de la partition /system/info :

    Size Used Avail Use% Mounted on

    9.9G 1.5G 8.0G 16% /system/info

    mon variable affiche le pourcentage USE%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FREE=`df -h|grep $DISC|awk '{print $4}'`

    la boucle marche mais pas pour ce besoin :

    entre 0% et 70% >> bien
    entre 70% et 90% >> moins bien
    entre 90% et 100% >> attention


    Avez-vous svp une idée pour l'adapter a sa :

    entre 0% et 70% >> bien
    entre 70% et 90% >> moins bien
    entre 90% et 100% >> attention

  10. #10
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Une fois la coquille corrigée, c'est une question de logique.
    Il faut tester en partant du niveau le plus haut et en descendant (-ge = greater or equal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DISC=/system/info
    USED=`df -h | grep $DISC | awk '{print $4}'`
    USED=${USED%\%}
    if [[ $USED -ge 90 ]] ; then
        echo "CRITIQUE"
    elif  [[ $USED -ge 70 ]] ; then
        echo "WARNING"
    else
       echo "OK"
    fi

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Une fois la coquille corrigée, c'est une question de logique.
    Il faut tester en partant du niveau le plus haut et en descendant (-ge = greater or equal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DISC=/system/info
    USED=`df -h | grep $DISC | awk '{print $4}'`
    USED=${USED%\%}
    if [[ $USED -ge 90 ]] ; then
        echo "CRITIQUE"
    elif  [[ $USED -ge 70 ]] ; then
        echo "WARNING"
    else
       echo "OK"
    fi
    Pour afficher le % de taux utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    USED=${USED%\%}
    if [[ $USED -ge 90 ]] ; then
        echo "CRITIQUE: $USED%"
    elif  [[ $USED -ge 70  ]] ; then
        echo "WARNING : $USED%"
    else
       echo "OK: $USED%"

    mais cela ne marche pas peu étre avec le variable ?
    je ne sais pas qui ce que vous en pensez ?

  12. #12
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "CRITIQUE: $USED%"
    Chez moi, ça marche.
    Sinon pour assurer, entourer le nom de la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "CRITIQUE: ${USED}%"
    Les accolades précisent le début et la fin du nom de la variable.

  13. #13
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 40
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "CRITIQUE: $USED%"
    Chez moi, ça marche.
    Sinon pour assurer, entourer le nom de la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "CRITIQUE: ${USED}%"
    Les accolades précisent le début et la fin du nom de la variable.
    merci bcp là ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $USED -ge 90 ]] ; then
    l'option "-ge" ca veut dire superieur ou égale c'est sa ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Citation Envoyé par N_BaH
    les crochets doubles sont inutiles, un simple test est suffisant.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Je pense qu'utiliser les [[ ]], en règle générale, est un bonne habitude car, en cas de variable non définie, le résultat est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [ $var = "x" ] ; then echo ok ; else echo ko; fi
    bash: [: =: unary operator expected
    ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ if [[ $var = "x" ]] ; then echo ok ; else echo ko; fi
    ko
    et ça évite d'avoir à écrire "$var"

  16. #16
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par 20132014 Voir le message
    merci bcp là ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $USED -ge 90 ]] ; then
    l'option "-ge" ca veut dire superieur ou égale c'est sa ?
    Il faut tester en partant du niveau le plus haut et en descendant (-ge = greater or equal)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Je dis (à chaque fois) que les variables doivent être systématiquement mises entre guillemets pour éviter ce type de message !

    UMQ!
    Use More Quotes!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #18
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Je dis (à chaque fois) que les variables doivent être systématiquement mises entre guillemets pour éviter ce type de message !

    UMQ!
    Use More Quotes!
    Les [[ ]] fonctionnent pour les opérateurs numériques (-eq, -le...) et alphanum (!=, >, <...).
    Ce que ne règlent pas les double-quotes :
    - si variable NONE indéfinie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ if [ $NONE -eq 8 ] ; then  echo ok; else echo ko; fi
    bash: [: -eq: unary operator expected
    ko
     
    $ if [ "$NONE" -eq 8 ] ; then  echo ok; else echo ko; fi
    bash: [: : integer expression expected
    ko
     
    $ if [[ $NONE -eq 8 ]] ; then  echo ok; else echo ko; fi
    ko
    UMB!
    Use More Brackets

    Bonne soirée.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    en effet

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ unset used
    $ u=$((used?used>=90?1:used>=70?2:3:0))
    $ case $u in 0) echo "Erreur";; 1) echo "pas bon";; 2) echo "Moyen";; 3) echo 'OK ! C'\''est OK !';;esac
    Erreur
    $ used=45
    $ u=$((used?used>=90?1:used>=70?2:3:0))
    $ case $u in 0) echo "Erreur";; 1) echo "pas bon";; 2) echo "Moyen";; 3) echo 'OK ! C'\''est OK !';;esac
    OK ! C'est OK !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #20
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    en effet

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ unset used
    $ u=$((used?used>=90?1:used>=70?2:3:0))
    $ case $u in 0) echo "Erreur";; 1) echo "pas bon";; 2) echo "Moyen";; 3) echo 'OK ! C'\''est OK !';;esac
    Erreur
    $ used=45
    $ u=$((used?used>=90?1:used>=70?2:3:0))
    $ case $u in 0) echo "Erreur";; 1) echo "pas bon";; 2) echo "Moyen";; 3) echo 'OK ! C'\''est OK !';;esac
    OK ! C'est OK !

    Bonjour,

    Bravo, tu m'en as mis plein la vue avec ton shell hyper compact

    Bon week-end.

Discussions similaires

  1. Script pour back up database
    Par jeff37 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/09/2004, 15h57
  2. script pour ajouter des utilisateurs postgres
    Par xopos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 16/08/2004, 10h49
  3. [langage] cherche script pour formater une chaine
    Par MASSAKA dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2003, 12h18
  4. [pgaccess] Script pour formulaire
    Par garou51 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/06/2003, 08h30
  5. Script pour envoyer des info a mysql
    Par rhum1 dans le forum Linux
    Réponses: 6
    Dernier message: 15/04/2003, 16h19

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