Script shell
unix02
Messages postés
17
Statut
Membre
-
unix02 -
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!
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:
- Script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
45 réponses
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.
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 :
Quant à lire la 1ère ligne d'un fichier, tu as l'embarras du choix :
head -1 fichier sed -n '1 p' fichier;-))
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 !!
#!/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 !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 "*"...
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?
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!!!!!!
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!!!!!!
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
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
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 :
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;-((
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
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
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...
autre chose la commande " play /.../../....wav "ne fonctionne pas
C'est à dire ???
Essaye avec "artsplay" alors...
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.
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.
1 - C'est ce que j'avais pensé aussi, à exploiter donc...
2 - Que répond la commande :
2 - Que répond la commande :
whereis play artsplay???
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?
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... ;-))
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... ;-))