Script shell

unix02 Messages postés 17 Statut Membre -  
 unix02 -
Bonjour,
je voudrais savoir comment peut-on lire(et non pas afficher) un fichier texte à partir d'un script car je voudrai réaliser un script qui lira dans ce fichier texte une ligne en particulier pour renvoyer une certaine valeur si la condition est réalisé.
merci d'avance de votre aide!
A voir également:

45 réponses

unix02 Messages postés 17 Statut Membre
 
non ca ne fontionne pas.En revanche j'ai regarder le fichier vérification.txt et à la premiere ligne il n'y a pas de caractere invisible je pourrai faire mon test sur cette ligne.
0
unix02 Messages postés 17 Statut Membre
 
est ce que tu connait la formule pour que le script lise la premiere ligne?
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Tu pourrais mettre ton fichier sur C-joint s'il te plaît, qu'on élucide ce problème de caractère qui fiche le binsssssssss ;-))

Quant à lire la 1ère ligne d'un fichier, tu as l'embarras du choix :
head -1 fichier
sed -n '1 p' fichier
;-))
0
unix02 Messages postés 17 Statut Membre
 
il n'y a que 2 fichiers le premier :


#!/bin/bash
nslookup www.ma-convention-collective.com -server 194.50.127.100 > /home/chetouane/Desktop/vérification.txt

exit 0


et le second


#!/bin/bash


var_IP=$(sed -n '1 p' /home/chetouane/Desktop/vérification.txt)

if [ "var_IP" = "*** Invalid option: server " ] ;
then

echo " le service DNS fonctionne correctement " >> /home/chetouane/Desktop/résultat.txt

else

echo " ATTENTION ! le service DNS présente un disfonctionnement" >> /home/chetouane/Desktop/résultat.txt

fi


exit 0

mais ca ne fonctionne toujour pas !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Bon déjà, il y a une erreur dans ton script (il manque le signe "$" à "var_IP") :
if [ "$var_IP" = '*** Invalid option: server'  ] ; 
ensuite change aussi les quotes doubles de "*** Invalid option: server" en quotes simples '*** Invalid option: server' pour éviter l'interprétation par le shell de l'astérisque "*"...
0
unix02 Messages postés 17 Statut Membre
 
salut jipicy,

normalement c'est bon tout est ok le script fonctionne merci encore pour ton aide!!!!
0
unix02 Messages postés 17 Statut Membre
 
Mais dit moi j'ai envi, j'ai envi d'aller un peu plus loin et d'ajouter dans mon script, une fonction qui permetterai de generer un signal sonore si une condition n'est pas réalisé.(si mon serveur dns présente un disfonctionnement).Aurai tu une idée?
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Re-

Regarde du côté de la commande "play" :
play /chemin/fichier.wav
;-))
0
unix02
 
salut ,

j'ai un autre souci, mon script fonctionne correctement tou va bien, meme quand je simule une panne du service dns mais c'est au niveau de l'affichage de la phrase que ca cloche une fois le script m'affiche tou va bien juste après sans aucune raison il m'affiche que j'ai un disfonctionnement.tou cela seulement quand je lance mon script automatiquement (via crontab).je ne comprend pas qu'il m'affiche qu'il ya un disfonctionnement alors que quand je lance le script manuellement il n'y a pas de souci!!!!!!
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Affiche le contenu de ton script, on n'est pas devin ;-))
Affiche aussi ta crontab...
0
unix02
 
d'accord je t'afficherai ça lundi sans faute mes documents sont au bureau!

merci.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Ok ;-))
0
unix02
 
salut jipicy,

tien voila le premier script : test.sh

#!/bin/bash
nslookup www.ma-convention-collective.com -server 194.50.127.100 > /vérification.txt

exit 0


ce script interroge le server DNS pour avoir la résolution.



et le second test2.sh

test2.sh
#!/bin/bash


var_IP=$(sed -n '6 p' /vérification.txt)

if [ "$var_IP" = 'Name: ma-convention-collective.com' ] ;
then

echo "le service DNS fonctionne correctement" >> /home/chetouane/Desktop/résultat.txt

cat /vérification.txt >> /home/chetouane/Desktop/résultat.txt

else


echo "ATTENTION ! le service DNS présente un disfonctionnement " >> /home/chetouane/Desktop/résultat.txt

cat /vérification.txt >> /home/chetouane/Desktop/résultat.txt
fi


exit 0


cet autre script utilise le fichier généré par le premier script pour afficher un message notamment dans le cas ou le le service DNS ne ferai pas la résolution.


J'ai mis ces deux fichiers executable sous crontab pour qu'ils se lancent automatiquement toutes les minutes.
Ceci, pour avoir un test régulier du service DNS.
Le souci comme je te le disais est que en principe sans disfonctionnement particulier je devrai toujour avoir le message "le service dns fonctionne correctement" or ce n'est pas le cas de temps en temps j'ai une petite alerte alors que le service DNS ne présente aucun disfonctionnement.

voila le fichier crontab ou tu peut voir les deux fichiers executable .

28,23,38,53 * * * * /opt/psa/admin/sbin/backupmng >$pmng >/dev/null 2>&1
* * * * 1-5 /home/chetouane/Desktop/test2.sh
* * * * 1-5 /home/chetouane/Desktop/test2.sh
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Re-

Deux petites choses...

Est-ce que quand ton server est down, le message dans "/vérification.txt" est le même ?
Est-ce que la "ligne 6" contient toujours "Name:..." ?
Je serai toi, j'écrirai plutôt la commande "sed" comme suit :
var_IP=$(sed -n '/^Name:/ p' /vérification.txt) 
Seconde chose, dans ta crontab c'est le même script qui est appelé :
* * * * 1-5 /home/chetouane/Desktop/test2.sh
* * * * 1-5 /home/chetouane/Desktop/test2.sh
;-((
0
unix02
 
dans vérification.txt le message change lorsque le service dns ne répon pas ce qui fait que la ligne 6 n'est plus la meme et que par conséquent le message devient "disfonctionnement........."

Quand je lance le script manuellement je n'ai jamais d'erreur.Ce n'est que lorsque je le lance via crontab qu'il déringole.

pour le crontab je me suis trompé quand j'ai copier son contenu les scripts appelé sont bien différents.

autre chose la commande " play /.../../....wav "ne fonctionne pas
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Ben désolé, je ne vois pas d'où ça peut venir ;-((

autre chose la commande " play /.../../....wav "ne fonctionne pas
C'est à dire ???
Essaye avec "artsplay" alors...
0
unix02
 
je pense que le premier souci vien du crontab.
Etant lancé automatiquement tout les deux en même temps il se peut que le "vérification.txt" soit en train de se mettre à jour pendant que le deuxieme script s''éxecute ce qui fait concrètement que lorsque le fichier test2.sh cherche la 6 ieme ligne, il ne trouve rien pendant cette petite periode de mis à jour et donc me genere un disfonctionnement.
qu'en penses-tu?


pour la commande play c'est simple lorqu'une commande existe sous shell, quand tu fait le script elle change de couleur un fois tapé comme le "echo" ou le "if" le "else"...
je l'ai tout de même tapé mé cela ne renvoi rien.J'ai même essayé sous le terminal mais rien.
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
1 - C'est ce que j'avais pensé aussi, à exploiter donc...

2 - Que répond la commande :
whereis play artsplay
???
0
unix02
 
là le mot est bien coloré mais c'est la même chose ca ne renvoi rien.Ce que je peut faire c'est aussi, à la place d'une alerte, c'est envoyer un mail automatiquement à une personne si le serveur dns présente un disfonctionnement. Si j'ajoute à mon script une commande mailx pour envoyé un mail tu pense que ca marchera?
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
là le mot est bien coloré mais c'est la même chose ca ne renvoi rien.
Le fichier ".wav" existe au moins ? Tu donnes le chemin complet (commande et fichier) ?

Si j'ajoute à mon script une commande mailx pour envoyé un mail tu pense que ca marchera?
En interne ? Y'a pas de raisons que ça ne marche pas... ;-))
0