Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1059 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [RESOLU] besoin aide script shell (pb sur boucle while)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] besoin aide script shell (pb sur boucle while)

n°961923
b0uzin
Posté le 08-10-2007 à 16:51:55  profilanswer
 

Bonjour,
 
En gros je cherche à vérifier l'espace disque de plusieurs machines sous certaines condition grace à un fichier de configuration.
 
Voici le script incriminé :
 

#/bin/sh
set -x
#FICHIER DE CONF
CONF=fichier.cfg
 
#SEUIL DES ALARMES
SEUIL=90
 
# Tant qu'une ligne est presente
cat $CONF | while read line
do
        # INITIALISATION DES PARAMETRES
        IP=$(echo ${line} | awk '{ print $1 } ')
        SOURCE=$(echo ${line} | awk '{ print $2 } ')
 
        ssh $IP -l root df -k | awk '{ print $6 "\t" $7}'| sed -e "s/\%//g" | sed '1d'>$IP.log
 
        cat $IP.log | while read line
        do
                PARTITION=$(echo ${line} | awk '{ print $2 } ')
                OCCUPATION=$(echo ${line} | awk '{ print $1 } ')
 
                if [ "$OCCUPATION" -lt $SEUIL ]
                then
                        echo "pas de probleme sur $SOURCE : $PARTITION est a $OCCUPATION%"
                else
                        echo "incident sur $SOURCE : $PARTITION est a $OCCUPATION%"
                fi
        done
        rm  $IP.log
done


 
voici le fichier de conf :
 

192.168.0.1 BIBI
192.168.0.2 BOBO
192.168.0.3 BABA
192.168.0.4 BUBU
192.168.0.5 BEBE


 
J'utilise une boucle while dans une autre boucle qui fonctionne lors du premier test. La machine 192.168.0.1 BOUBOU est bien checké mais pas les suivantes. Pourquoi ?
 
Merci.


Message édité par b0uzin le 10-10-2007 à 11:00:00
mood
Publicité
Posté le 08-10-2007 à 16:51:55  profilanswer
 

n°962058
roscocoltr​an
L'enfer c'est les utilisateurs
Posté le 08-10-2007 à 23:05:45  profilanswer
 

as-tu pensé à installer nagios ? avec plusieus machines, ça peut valoir la peine d'essayer.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
n°962093
b0uzin
Posté le 09-10-2007 à 07:50:19  profilanswer
 

Merci mais je ne cherche pas de solution alternative. C'est également ludique pour comprendre ce qui cloche dans ce script.
 
A bientot.

n°962115
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-10-2007 à 09:29:41  profilanswer
 

A priori rien ne cloche (excepté le #!/bin/sh, il manque le !)  [:spamafote]


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°962116
wedgeant
Da penguin inside
Posté le 09-10-2007 à 09:30:16  profilanswer
 

On pourrait avoir le log du traitement ?


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°962118
b0uzin
Posté le 09-10-2007 à 09:42:00  profilanswer
 

voici le meme un peu plus propre :
 

#!/bin/sh
set -x
#FICHIER DE CONF
CONF=fichier.cfg
 
#SEUIL DES ALARMES
SEUIL=90
 
while read IP SOURCE
do
                ssh $IP -l root df -k | awk '{ print $6 "\t" $7}'| sed -e "s/\%//g" | sed '1d'>$IP.log
 
        while read OCCUPATION PARTITION
        do
                if [ "$OCCUPATION" -lt $SEUIL ]
                then
                        echo "pas de probleme sur $SOURCE : $PARTITION est a $OCCUPATION%"
                else
                        echo "incident sur $SOURCE : $PARTITION est a $OCCUPATION%"
                fi
        done < $IP.log
rm  $IP.log
done < $CONF


 
Et voici les logs :
 

CONF=fichier.cfg
SEUIL=90
+ read IP SOURCE
+ ssh 192.168.0.1 -l root df -k  
+ awk { print $6 "\t" $7}  
+ sed -e s/\%//g  
+ sed 1d  
+ read OCCUPATION PARTITION  
+ [ 26 -lt 90 ]  
+ echo pas de probleme sur BIBI : / est a 26%
pas de probleme sur BIBI : / est a 26%
+ read OCCUPATION PARTITION  
+ [ 9 -lt 90 ]  
+ echo pas de probleme sur BIBI : /usr est a 9%  
pas de probleme sur BIBI : /usr est a 9%
+ read OCCUPATION PARTITION  
+ [ 8 -lt 90 ]  
+ echo pas de probleme sur BIBI : /var est a 8%  
pas de probleme sur BIBI : /var est a 8%
+ read OCCUPATION PARTITION  
+ [ 1 -lt 90 ]  
+ echo pas de probleme sur BIBI : /tmp est a 1%  
pas de probleme sur BIBI : /tmp est a 1%
+ read OCCUPATION PARTITION  
+ [ 15 -lt 90 ]  
+ echo pas de probleme sur BIBI : /home est a 15%  
pas de probleme sur BIBI : /home est a 15%
+ read OCCUPATION PARTITION  
+ rm 192.168.0.1.log  
+ read IP SOURCE


Message édité par b0uzin le 09-10-2007 à 09:58:50
n°962121
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-10-2007 à 09:48:17  profilanswer
 

tu peux utiliser les balises [fixed] si tu veux pour ton script, ca rend mieux sur le forum ;)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°962123
wedgeant
Da penguin inside
Posté le 09-10-2007 à 09:51:04  profilanswer
 

Ben alors, il marche ce script [:mouais]
 
Et d'ailleurs, tu rentres les infos à la main avec des read ? [:gratgrat]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°962129
b0uzin
Posté le 09-10-2007 à 10:00:40  profilanswer
 

Bah non car il ne lit que la premiere ligne du premier fichier de configuration (BIBI).
 
Je n'ai pas compris pour les infos à la main pour les read... :|
 
Le fichier fichier.cfg, c'est bien moi qui le remplit oui.

n°962132
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-10-2007 à 10:12:26  profilanswer
 

ben en foutant un echo à la place de son ssh | brol ca marche nickel, donc ca vient pas des while, ya un truc dans

ssh $IP -l root df -k | awk '{ print $6 "\t" $7}'| sed -e "s/\%//g" | sed '1d'>$IP.log


qui doit provoquer l'arrêt brutal :/


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le 09-10-2007 à 10:12:26  profilanswer
 

n°962143
b0uzin
Posté le 09-10-2007 à 10:47:32  profilanswer
 

bien vu !
 
J'ai commenté cette ligne et empecher la suppression du fichier de log. Le circuit fonctionne !!!
 
Bon, maintenant que l'on sait où chercher, reste à savoir où se situe le problème et comment le contourner...

n°962144
wedgeant
Da penguin inside
Posté le 09-10-2007 à 10:53:04  profilanswer
 

essayes

ssh $IP -l root df -k | awk '{ print $6 \t $7}'| sed -e 's/\%//g' | sed '1d' > $IP.log


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°962154
b0uzin
Posté le 09-10-2007 à 11:13:11  profilanswer
 

Il fallait juste modifier les espaces entre le > c'est ça ?
 
Ca ne change rien... :(

n°962155
o'gure
Modérateur
Multi grognon de B_L
Posté le 09-10-2007 à 11:13:39  profilanswer
 

non le "\t" en \t
et le " " en ' ' dans la règle du sed

Message cité 1 fois
Message édité par o'gure le 09-10-2007 à 11:14:35

---------------
Relax. Take a deep breath !
n°962160
wedgeant
Da penguin inside
Posté le 09-10-2007 à 11:24:21  profilanswer
 

o'gure a écrit :

non le "\t" en \t
et le " " en ' ' dans la règle du sed


Monsieur o'gure est observateur :jap:
 
:D


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°962162
o'gure
Modérateur
Multi grognon de B_L
Posté le 09-10-2007 à 11:25:17  profilanswer
 

J'adore le jeu des 7 erreurs [:cerveau o]


---------------
Relax. Take a deep breath !
n°962164
b0uzin
Posté le 09-10-2007 à 11:27:09  profilanswer
 

ssh $IP -l root df -k | awk '{ print $6,$7}' | sed -e 's/\%//g' | sed '1d' > $IP.log


 
Le /t dans le awk sans les guillemets ne fonctionne pas.
 
Le probleme provient du ssh car j'ai remplacé temporairement dans le script par cette ligne :
 

ssh $IP -l root df -k > test.log


 
ensuite je l'ai commenté puis lancé le script avec :
 

cat test.log | awk '{ print $6,$7 }'| sed -e 's/\%//g' | sed '1d' > $IP.log


 
Et ça fonctionne...
 
bien sur lorsque je decommente la ligne avec le ssh, le script ne boucle pas.


Message édité par b0uzin le 09-10-2007 à 11:29:26
n°962166
wedgeant
Da penguin inside
Posté le 09-10-2007 à 11:29:36  profilanswer
 

Mhhmm, c'est pas /t qu'il faut mettre, mais \t :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°962167
roscocoltr​an
L'enfer c'est les utilisateurs
Posté le 09-10-2007 à 11:31:03  profilanswer
 

n'empêche, avec nagios... [:thalis]


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
n°962171
b0uzin
Posté le 09-10-2007 à 11:34:28  profilanswer
 

J'ai reglé le probleme, j'ai viré le \t ! :p


Message édité par b0uzin le 09-10-2007 à 11:34:50
n°962173
b0uzin
Posté le 09-10-2007 à 11:37:01  profilanswer
 

roscocoltran a écrit :

n'empêche, avec nagios... [:thalis]


 
Arf, trop facile !  :na:  

n°962461
b0uzin
Posté le 10-10-2007 à 10:45:33  profilanswer
 

Personne n'a d'idée ?
 
Pourquoi le ssh emepche la boucle de boucler ??!

n°962467
b0uzin
Posté le 10-10-2007 à 10:59:17  profilanswer
 

Trouvé !
 
il suffisait de faire une recherche sur les ng avec "ssh boucle while"
 
Le ssh bouffe l'entrée standard, il suffisait d'ajouter un  
 

ssh -n $IP df -k

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [RESOLU] besoin aide script shell (pb sur boucle while)

 

Sujets relatifs
permissions sur partitions linux,la galere ![resolu]Temps d'exécution maximum d'un script bash
[RESOLU] Putty problèmes affichage caractères[Résolu] Configuration pour Ubuntu
Script SHELL. Executer du code dans une 2eme fenetre...Resolu - Partition EXT3 morte?
[Résolu] Problème ipcop & urlfilter[resolu] freemind: version ?
[resolu][mandriva] peertv gcc++ 
Plus de sujets relatifs à : [RESOLU] besoin aide script shell (pb sur boucle while)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR