Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/11/2019, à 11:27

remi82

Bash test si IP KO - Ajout d'un si, mais c'est en erreur

Bonjour,

J'ai actuellement un bash, qui lit un fichier, et qui pour chaque ligne fait un ping. Si, KO, celui-ci m'envoi un mail.

#!/bin/bash
#Declaration des variables
wsmtp=smtp
wuser=user
wmdp=mdp
wexped=exped
wdest=adresse_mail
#fin


dir=/home/users/ping_routeurs_ip.txt
#read dir
if [ -e $dir ]
	then
		while read ligne #pour chaque ligne
	do
		wip=$(echo $ligne | cut -d: -f1)		
		wsujet=$(echo $ligne | cut -d: -f2)
		wmessage=$(echo $ligne | cut -d: -f3)
		
		#Envoi du mail si KO
		HOST=$wip;COUNT=4;count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }');if [ $count -eq 0 ]; then sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u $wsujet -m $wmessage; fi
		
	done < "$dir"
else
	sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u 'Fichier non trouve' -m "Le fichier des IP n'a pas été trouvé";
fi 

Cependant, il arrive que je ne veuille plus un ping d'une ligne pendant quelques temps.

Je modifie mon fichier des IP en commencant la ligne par #

J'ai ajouté dans mon bash

if [[ $wip != '#*' ]]
then
fi

dir=/home/users/ping_routeurs_ip.txt
#read dir
if [ -e $dir ]
	then
		while read ligne #pour chaque ligne
	do
		wip=$(echo $ligne | cut -d: -f1)		
		wsujet=$(echo $ligne | cut -d: -f2)
		wmessage=$(echo $ligne | cut -d: -f3)
		
               if [[ $wip != '#*' ]]
               then
		#Envoi du mail si KO
		HOST=$wip;COUNT=4;count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }');if [ $count -eq 0 ]; then sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u $wsujet -m $wmessage; 
               fi 
		
	done < "$dir" 

Mais j'obtiens le message d'erreur :
Syntax error: "done" unexpected (expecting "fi")

J'ai beau chercher, je ne vois pas mon erreur.
Merci

Dernière modification par remi82 (Le 15/11/2019, à 11:30)

Hors ligne

#2 Le 15/11/2019, à 11:35

pingouinux

Re : Bash test si IP KO - Ajout d'un si, mais c'est en erreur

Bonjour,
Dans ton fichier, tu as 3 if et un seul fi.

Hors ligne

#3 Le 15/11/2019, à 11:48

FrancisFDZ

Re : Bash test si IP KO - Ajout d'un si, mais c'est en erreur

Bonjour,
Je ne suis pas expert, mais le vois :
L 3 :  "if ..."
L 4 :  "then ..."
L 5 :  "while ..."
L 6 :  "do ..." (correspond au while)
L 10 ; "if  ..."
L 11  :"then ..." (suite du "if")
L 14 "fi" (fermeture du if de la ligne 10)
L 16 ; "done" (fermeture du "do" de la ligne  6)
Il manque bien un "fi" pour fermer la ligne 3
Par contre, je ne comprends pas le "syntax error" ; pour moi, le "done" est bien placé, un "fi" devrait figurer en ligne suivante

[Edit] Je vois que pingouinux a répondu, il s'y connait beaucoup mieux que moi, mais il a apparemment trouvé un "if" qui m'a échappé [/Edit]

Dernière modification par FrancisFDZ (Le 15/11/2019, à 11:52)


-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]

Hors ligne

#4 Le 15/11/2019, à 11:51

remi82

Re : Bash test si IP KO - Ajout d'un si, mais c'est en erreur

Bonjour,

C'est quand j'ai copié mon code sur le forum. J'ai oublié un fi.
Et j'ai ajouté le fi manquant.

Maintenant, j'obtiens comme erreur :

[[: not found

Encore merci

Dernière modification par remi82 (Le 15/11/2019, à 11:56)

Hors ligne

#5 Le 15/11/2019, à 11:58

Watael

Re : Bash test si IP KO - Ajout d'un si, mais c'est en erreur

d'une manière générale :
pourquoi appeler un fichier "dir"ectory ?
il faut toujours mettre le Développement de variables entre guillemets, surtout dans les tests.
grep|awk|awk, c'est pas possible. un seul awk doit suffire.
un script bash doit être exécutable, et/ou être appelé avec... bash ! parce que sh n'est pas forcément un lien vers /bin/bash.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 15/11/2019, à 12:09

remi82

Re : Bash test si IP KO - Ajout d'un si, mais c'est en erreur

Je viens de modifier mon contrôle.
C'est maintenant ok.

Merci à tous

Hors ligne