[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. Oui dans un fichier de log il y a plusieurs heure. Les heures sont mentionnées a chaque fois que le crontab effectue la commande.

    Dans le cas du log ci-dessus: sauvegarde du Thu Nov 5 15:00:01 CET 2009
    1. Euh c'est juste pour une heure ou c'est pour plusieurs... car si c'est pour plusieurs il serai intéressante de rajouter les heures auquel se sont passé ces warning..
      1. Voici un exemple d'un fichier log:

        sauvegarde du Thu Nov  5 15:00:01 CET 2009
        
        ACTIVITE CPU
        #############################
        La CPU est occupé a 100 % et libre à 0%
        Alerte CPU !!!
        #############################
        ACTIVITE MEMOIRE
        #############################
         Le mémoire total est de 3092316 ko et il y a 62 % de mémoire libre et 38 % de la mémoire occupé 
        Alerte RAM !!!
        #############################
        5 PROCESSUS GOURMAND
        #############################
        %CPU COMMAND
         4.1 /usr/X11R6/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
         1.7 /usr/lib/firefox-3.0.15/firefox
         1.4 gedit /home/nicolas/allombert-blaise_shell2.sh
         1.0 bash
         0.7 /usr/bin/compiz.real --ignore-desktop-hints --replace --sm-client-id 1090fcd6eb1e69ea96125741660041447200000032900022 --loose-binding core ccp
        #############################
        ACTIVITE DISQUE
        #############################
        Sur le disque /dev/sda6 il y a 12G de disponible et 27% du disque d'occupé
        Sur le disque tmpfs il y a 1.5G de disponible et 0% du disque d'occupé
        Sur le disque varrun il y a 1.5G de disponible et 1% du disque d'occupé
        Sur le disque varlock il y a 1.5G de disponible et 0% du disque d'occupé
        Sur le disque udev il y a 1.5G de disponible et 1% du disque d'occupé
        Sur le disque tmpfs il y a 1.5G de disponible et 1% du disque d'occupé
        Sur le disque lrm il y a 1.5G de disponible et 1% du disque d'occupé
        Sur le disque /dev/sdc1 il y a 808M de disponible et 59% du disque d'occupé
        Alerte Disque sur /dev/sda6!!!
        Alerte Disque sur tmpfs!!!
        Alerte Disque sur varrun!!!
        Alerte Disque sur varlock!!!
        Alerte Disque sur udev!!!
        Alerte Disque sur tmpfs!!!
        Alerte Disque sur lrm!!!
        Alerte Disque sur /dev/sdc1!!!
         5 Plus gros fichier de /dev/sda6
        /
        2054212	/usr
        1191524	/home
        1191520	/home/nicolas
        1172684	/media
        1172672	/media/USB 2GO
        1076220	/home/nicolas/Documents
         5 Plus gros fichier de tmpfs
        /lib/init/rw
        0	/lib/init/rw/sendsigs.omit.d
        0	/lib/init/rw
         5 Plus gros fichier de varrun
        /var/run
        4	/var/run/update-motd
        4	/var/run/console
        0	/var/run/pppconfig
        0	/var/run/pm-utils/pm-powersave/storage
        0	/var/run/pm-utils/pm-powersave
        0	/var/run/pm-utils/locks
         5 Plus gros fichier de varlock
        /var/lock
        0	/var/lock
         5 Plus gros fichier de udev
        /dev
        264	/dev
        176	/dev/.udev
        172	/dev/.udev/db
        88	/dev/shm
        0	/dev/v4l/by-path
        0	/dev/v4l/by-id
         5 Plus gros fichier de tmpfs
        /dev/shm
        88	/dev/shm
         5 Plus gros fichier de lrm
        /lib/modules/2.6.28
         5 Plus gros fichier de /dev/sdc1
        /media/USB
        #############################


        Ce fichier log est stocker dans un dossier tous les jours a 1h du matin. Exemple de nom du dossier: Sauvegarde 20091105
        1. Pour le crontab c'est cool sa ma bien aider.

          Enfaite il y a pleins de messages que j'ai pas lu c'est pour sa que je comprenais pas.

          Et juste un dernier truc: tous mes information sur le système sont mis dans un fichier log qui lui (avec crontab) fais les mesure tous les heures. Tous les jours a 1h du matin ( crontab toujours !!) ce fichier log est déplacer dans un dossier qui a pour nom la date du jour. j'aimerais que l'utilisateur recherche les informations systèmes d'une heure et d'un jour qui désire. comment faire?
          1. Juste tu t'y es pris comment pour résoudre ton problème?

            (Content de t'avoir aider, tu as vu la réponse sur les crontab? ça te suffit? )

            Ps: N'oublie pas de mettre résolu!
            1. Un grand merci a tous le monde!!
              J'annonce une grande nouvelle dans cette discution: J'AI COMPRIS et SA FONCTIONNE !!!!

              Encore un grand merci!!!

              Bonne journée
              1. Modérateur
                Bah en soi pourquoi pas du awk (enfin si, là c'est injustifié), ça marcherait et au pire il y a plein de pages internet qui expliquent comment utiliser awk.

                Le problème c'est qu'à ce stade il ne semble pas avoir compris > et >> (qui est la "bonne méthode" car elle ne requiert pas awk pour fonctionner et elle est plus performante même si ici c'est négligeable). Or > et >> sont simples à utiliser, awk n'est pas trivial à utiliser et pas justifié ici...
                1. Contributeur
                  j'utilise awk, je te laisse les cat ¦ grep ¦ cut
              2. Si ça, ça ne l'embrouille pas plus, je go delete linux, et moi aussi par la même occase
                1. Modérateur
                  Utilisons une bombe thermo nucléaire, il y a une mouche qui attaque :-)
                  1. Contributeur
                    dans ton fichier tu mets
                    MAXCPU 10
                    MAXMEM 1024

                    et dans ton script
                    MAXCPU=$(awk '/MAXCPU/ {print $2}' fichier.conf)
                    MAXMEM=$(awk '/MAXMEM/ {print $2}' fichier.conf)
                    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. Pour ajouter ton message d'erreur a ton fichier.conf...
                        Test, tu verras ;-)
                        1. Je ne comprend pas du tout. Pourquoi utiliser des redirection?
                          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. Modérateur
                              Tu parles ! J'étais loin devant j'ai donné la réponse à 11h53 :-)
                              • 1
                              • 2