Rechercher : dans
Par :

Probleme script bash !! redirection fichier..

Dernière réponse le 25 aoû 2007 à 23:35:01 origan31, le 25 aoû 2007 à 17:33:56 
 Signaler ce message aux modérateurs

Bonjour,
-------


J'ai un fichier "toto.txt" dont le contenu est: "ceci est un exemple"


Je souhaiterais a l'aide d'un bash:


Rediriger le contenu de "toto.txt" dans une variable et dire

si cette variable est = "ceci est un exemple" alors envoyer

un mail sinon ne rien faire.

(mon but est d'envoyer un mail si le contenu d'un fichier texte change).


Merci de votre aide,

climbing31@gmail.com

Meilleures réponses pour « Probleme script bash !! redirection fichier.. » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
[Shell] Créer un fichier vide VoirPour créer un fichier vide, il vous suffit de taper la commande suivante : > fichier Vous pouvez également utiliser la commande touch : touch fichier
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...

1

jipicy, le 25 aoû 2007 à 17:45:18

Salut,

variable=$(cat toto.txt)
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

origan31, le 25 aoû 2007 à 18:36:08

Merci Jipicy, j'ai donc essayer de faire le bash mais sans success :-((

pourrais-tu m'aider ?? voici le petit script :


#! /bin/bash

variable=$(cat toto.txt)

for variable in $variable

if [ "$variable" = "maison" ]
then
ls
fi



Merci,

climbing31@gmail.com

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31

3

jipicy, le 25 aoû 2007 à 18:49:07

Explique clairement ce que tu veux faire :
- affiche le contenu de ton fichier "toto.txt"
- précise si tu veux rechercher qu'un mot ou une chaîne précise ou encore une ligne ou autre...
- affiche le contenu du répertoire que tu veux lister
- à la place de "for variable in $variable" il vaudrait mieux changer de nom pour ne pas avoir 2 nom de variable identique
- etc.

Dernier point : Retire ton mail de tes posts merci. Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

origan31, le 25 aoû 2007 à 19:03:15

D'accord pour plus de précision ;-)


- Dans un fichier "toto.txt", a la première ligne il y a une chaine de caractère, une phrase, exemple :
"je m'appel toto"

- Je souhaiterais dans un "bash" dire :

Si dans le fichier "toto.txt" dans la première ligne il est écrit "je m'appel toto" alors envoyer un mail

Si dans le fichier "toto.txt" dans la première ligne il n'est pas écrit "je m'appel toto" alors ne rien faire


merci

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31

5

jipicy, le 25 aoû 2007 à 19:16:04

Il y a sûrement d'autres façons de faire, en voilà une :

[tmpfs]$ cat toto.txt

je m'appelle toto
je m'appelle tutu
je m'appelle titi

[tmpfs]$ cat origan31.sh     

#! /bin/bash

# set -xv

head -1 "$1" | grep "$2" >/dev/null
if [ "$?" == 0 ]
then
echo "La 1ère ligne contient bien : $2"
else
echo "La 1ère ligne ne contient pas : $2"
fi

[tmpfs]$ ./origan31.sh toto.txt "je m'appelle toto"
La 1ère ligne contient bien : je m'appelle toto

[tmpfs]$ ./origan31.sh toto.txt "je m'appelle momo"
La 1ère ligne ne contient pas : je m'appelle momo

[tmpfs]$ 
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

6

origan31, le 25 aoû 2007 à 20:19:00

Merci beaucoup Jipicy pour cette réponse,

j'obtient bien un résultat, j'ai juste un second probleme :


- Dans le fichier "toto.txt", a la première ligne j'aurais une phrase du type :

"la température est de 25 degrés celcius"


- Dans ce "bash", je souhaiterais dire :

Si dans le fichier "toto.txt" je trouve une valeur du chiffre supérieur a 25 alors
j'envoi un mail.



est-ce que c'est possible?

merci de l'aide,

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31

7

jipicy, le 25 aoû 2007 à 20:32:20

[tmpfs]$ cat toto.txt

la température est de 28 degrés celcius
je m'appelle toto
je m'appelle tutu
je m'appelle titi

[tmpfs]$ cat origan31.sh

#! /bin/bash

# set -xv
temp=$(head -1 $1 | egrep -o "[0-9]{2}")

if [ "$temp" -gt 25 ]
then
echo "Attention la température excède les 25° !!! "
fi

[tmpfs]$ ./origan31.sh toto.txt
Attention la température excède les 25° !!!

[tmpfs]$ 
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

8

origan31, le 25 aoû 2007 à 20:47:43

Merci beaucoup !! ca marche presque (je me débrouillerais ensuite pour envoyer le résultat par mail)

J'ai juste un probleme, une erreur quand je lance le bash,


En fait la phrase qu'il y a dans "toto.txt" est :

SNMPv2-SMI::enterprises.9.9.13.1.3.1.3.1 = Gauge32: 26

et c'est le dernier chiffre "26" qui est la température, tout le reste ne change jamais.


j'ai l'erreur:

./origan31.sh: line 7: [: 13
32
26: integer expression expected



merci beaucoup pour votre aide ,

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31

9

jipicy, le 25 aoû 2007 à 22:48:47

Change la ligne :

temp=$(head -1 $1 | egrep -o "[0-9]{2}")
par celle là :
temp=$(head -1 $1 | egrep -o "([0-9]{2})$")
et ça devrait rouler ;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

10

origan31, le 25 aoû 2007 à 23:20:46

Super merci Jipicy ! ca marche ;-)

un dernier probleme aprés je t'embete plus !


je voudrais envoyer un mail au lieu de "echo",

j'ai écris pour le mail

#!/bin/sh

# set -xv
temp=$(head -1 $1 | egrep -o "([0-9]{2})$")

if [ "$temp" -gt 20 ]
then
mail climbing31@gmail.com -s "Attention la temperature excede 25 degres !!!"
fi

(sendmail est configué sur la machine)


Merci,

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31

11

jipicy, le 25 aoû 2007 à 23:27:43

echo "Attention la temperature excede 25 degres !!! " |  mail climbing31@gmail.com -s "Warning !!! "
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

12

 origan31, le 25 aoû 2007 à 23:35:01

Resalut Jipicy, merci beaucoup ca fonctionne !!!

encore merci pour votre aide
;-)

Configuration: Windows XP
Internet Explorer 7.0

Répondre à origan31