#1 Le 15/03/2012, à 18:20
- GeRoHi
Besoin d'aide pour la rédaction d'un script bash
Salut à tous,
Je dois rédiger un script en bash de manière assez urgente mais je manque cruellement de connaissances.
Voici en langage littéral et bash le code dont j'ai besoin :
cd ~/FTP
tailledb=find . -name 'donnees_brutes*' -exec du {} \; # on affecte à tailldb la taille du fichier en question
if [tailledb < 250000] || [tailledb > 750000]; then # on compare cette taille avec une fourchette de valeurs théoriques acceptables
echo "ALERTE : Le fichier des données brutes est supérieur à 750ko ou inférieur à 250ko."
On souhaite enregistrer la taille du fichier et le message d'alerte s'il y a lieu dans un fichier "event.csv"
Merci d'avance pour votre aide, si vous avez besoin d'infos supplémentaires n'hhésitez à demander.
Bye
Hors ligne
#2 Le 15/03/2012, à 19:46
- Nehalem501
Re : Besoin d'aide pour la rédaction d'un script bash
Ton script il teste ca sur un fichier ( ./script.sh monfichier et s'il il faut il ecrit quelque chose dans event.csv )
ou est ce que tu entre en parametre un dossier où il teste tout les fichiers du dossier?
quelque chose dans le genre de ./script.sh /home/user/monrepertoire/
Hors ligne
#3 Le 15/03/2012, à 21:03
- pingouinux
Re : Besoin d'aide pour la rédaction d'un script bash
Bonsoir,
Un truc dans ce genre devrait faire l'affaire.
$ cat filtre.sh
#!/bin/bash
min=250000; max=750000
for i in "$@"
do
attributs=( $(ls -l "$i") )
lon=${attributs[4]}
nom=${attributs[7]}
if (( $lon<$min || $lon>$max ))
then
printf "ALERTE : Le fichier %s est supérieur à %s ou inférieur à %s. longueur=%d\n" $nom $max $min $lon
fi
done | tee event.csv
Appel :
cd ~/FTP
./filtre.sh donnees_brutes*
Hors ligne
#4 Le 15/03/2012, à 21:56
- sputnick
Re : Besoin d'aide pour la rédaction d'un script bash
Haaaaaannnn ! pingouinux, on se base pas sur la sortie de ls -l, c'est pas portable du tout même de linux à linux.
man 1 stat
man du
Un peu de lecture : http://mywiki.wooledge.org/BashFAQ#Bash … _output.3F
PS :
for i
suffit, pas besoin de "$@"
Dernière modification par sputnick (Le 15/03/2012, à 22:02)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 15/03/2012, à 22:07
- pingouinux
Re : Besoin d'aide pour la rédaction d'un script bash
D'accord sputnick, mais GeRoHi peut adapter mon script (même imparfait) avec le ls de sa plate-forme, ou mieux, utiliser une de tes commandes portables.
Hors ligne
#6 Le 15/03/2012, à 22:08
- sputnick
Re : Besoin d'aide pour la rédaction d'un script bash
Oui, tout est possible
Pourquoi on parse pas ls: (encore de la lecture) http://mywiki.wooledge.org/ParsingLs
Dernière modification par sputnick (Le 15/03/2012, à 22:09)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#7 Le 15/03/2012, à 22:41
- GeRoHi
Re : Besoin d'aide pour la rédaction d'un script bash
Bonsoir tout le monde,
Waow je m'attendais pas à tant de réponses, c'est sympa merci.
J'ai pas trop le temps de plancher là dessus ce soir, je m'y remet demain après-midi.
Pour répondre à la question de Nehalem, je vais détailler un peu le principe :
Le ficher dont le nom contient "donnees_brutes[horodatage]" est rapatrié sur l'ordinateur dans le dossier "FTP" (on travaille sur une "chaine" Windows(acquisition de données) --- Debian (Parefeu / chien de garde) --- Serveur)l
On vérifie l'existence et la taille du fichier rapatrié (tache qui sera automatisée car un fichier est enregistré chaque heures sur l'ordinateur windows)
On enregistre les résultats du script dans le fichier "event.csv" qui servira par la suite à alimenter un petit flux RSS (de façon à avoir régulièrement des infos sur le bon fonctionnement du système d'acquisition)
Voilou, à demain aprem quand j'aurai le temps de me plonger dans le code !
Hors ligne