[script shell] fichier configuration

Bonjour,

J'ai fais un petit script qui donne l'activité cpu. J'ai aussi fais une alerte mais je voudrais mettre la valeur de l'alerte dans un fichier de configuration et non dans le scripte directement comme ci dessous:

cpulib=$(vmstat | grep -v procs|grep -v r| tr -s ' '|cut -d " " -f 16) ; cpuocup=$(( 100 - $cpulib )) ;echo "La CPU est occupé a $cpuocup % et libre à $cpulib%" ; if [ $cpuocup -ge 10 ]; then echo "Alerte CPU !!!" ;fi

Merci de votre aide.
Configuration: Linux
Firefox 3.0.15

31 réponses

Résumé de la discussion

Plusieurs réponses discutent de déplacer le seuil d’alerte CPU et les valeurs de configuration hors du script vers un fichier de configuration, afin que l’alerte soit modulable sans toucher au code ou sans modifier le fonctionnement global. Des approches utilisent MAXCPU et MAXMEM dans un fichier, puis lisent ces valeurs via awk ou cat dans le script, par exemple MAXCPU=$(awk '/MAXCPU/ {print $2}' fichier.conf) ou MAXCPU=$(cat fichier.conf). D'autres proposent d'écrire les valeurs dans un seul fichier source avec une redirection '>' puis '>>' pour réunir les résultats, ou d'utiliser cat pour fusionner plusieurs fichiers, sans conclure sur l'état du fil.

Bobot (l’IA à votre service)
  1. Modérateur
    Ben il suffit de rediriger le flux écrit vers la sortie standard vers un fichier avec l'opérateur > ou >>. L'opérateur > réécrit le fichier avec le résultat de la commande dans le fichier cible, tandis que >> écrit à la suite. Exemple :

    ls > pouet.txt
    cat pouet.txt
    ls >> pouet.txt
    cat pouet.txt
    ls > pouet.txt
    cat pouet.txt
    


    Bonne chance
    1. Hello,

      Si j'ai bien compris, ta valeur de l'alerte est le '10'.

      Donc tu peux mettre '10' dans le fichier alerte.conf ;
      Et remplacer : if [ $cpuocup -ge 10 ]; then echo "Alerte CPU !!!" ;fi
      Par : if [ $cpuocup -ge `cat alerte.conf` ]; then echo "Alerte CPU !!!" ;fi

      Cordialement,
      Marc.
      1. Contributeur
        hello
        echo 10 > fichier.conf
        et dans le script
        MAXCPU=$(cat fichier.conf)
        ...
        if [ $cpuocup -ge $MAXCPU ]; then echo "Alerte CPU !!!" ;fi
        1. Juste une question: si je veux mettre plusieurs valeurs pour plusieurs paramètres par exemple un pour la CPU et un pour la mémoire je fais comment?
          1. Modérateur
            Il faut que tu lises un tutoriel en bash :-)
            http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Systeme/TDTP2003/tp03.html

            Section "Arguments de la ligne de commande"

            Bonne chance
            1. J'ai bien lu ce paragraphe mais je ne vois toujours pas comment résoudre mon problème...

              Merci quand même.
              1. Modérateur
                Tu cherches bien à récupérer les arguments passés à ton programme shell ? Si oui, ceux si sont stockés dans $1, $2 etc...
                1. Non pas du tout. Je t'explique:

                  J'ai un script ou j'ai mis 2 alertes, une pour la CPU et une pour la mémoire. Pour le moment j'ai mis les 2 valeurs de ses alertes dans 2 fichier .conf . Et je voudrais avoir comment mettre ses 2 valeurs dans un seul fichier .conf .

                  voici script.sh:

                  if [ $pourcenmemocup -ge `cat alerteMEM.conf` ]; then echo "Alerte RAM !!!" ;fi
                  if [ $cpuocup -ge `cat alerteCPU.conf` ]; then echo "Alerte CPU !!!" ;fi

                  et mes 2 fichier de configurations:

                  configCPU.conf:

                  5

                  configMEM.conf:

                  50
                  1. if [ $pourcenmemocup -ge `cat alerteMEM.conf` ]; then echo "Alerte RAM !!!" >> ./fichier.conf ;fi
                    if [ $cpuocup -ge `cat alerteCPU.conf` ]; then echo "Alerte CPU !!!">> ./fichier.conf ;fi

                    pour vérifier...
                    cat ./fichier.conf
                    1. Modérateur
                      Ah ok, j'ai mal compris ce que tu voulais dire, le mot argument était ambigu.

                      Ben à ce moment là j'ai répondu à ta question dans le message <1>. Tu écris la première valeur avec > dans ton fichier de sortie, puis tu écris la seconde à la suite dans ce même fichier avec >>.

                      ma_premiere_commande > fichier.txt
                      ma_seconde_commande >> fichier.txt


                      Ou on peut aussi imaginer que tu fasses un cat de tes deux fichiers vers le fichier unifié, mais c'est un peu dommage de passer par des fichiers intermédiaires :

                      cat fichier1.txt fichier2.txt > fichier.txt


                      Bonne chance
                      1. Modérateur
                        Tu parles ! J'étais loin devant j'ai donné la réponse à 11h53 :-)
                        1. Modérateur
                          Oui on a même répondu à ta question :-) Est-ce que tu as essayé ce que nous venons de t'indiquer ?
                          1. Je ne comprend pas du tout. Pourquoi utiliser des redirection?
                            1. Pour ajouter ton message d'erreur a ton fichier.conf...
                              Test, tu verras ;-)
                              1. Moi je veux juste mettre 2 valeurs dans mon fichier conf.
                                Je peux même pas test je comprend pas ce que vous me dites.
                                Si sa ne te dérange pas réécrit mon script mais avec tes modifs sa m'aidera peut être a comprendre
                                • 1
                                • 2