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/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 wink

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 wink

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. smile

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 ! smile

Hors ligne