Bonjour,
Je vous explique mon problème de script :
On me demande de créer un script sous shell bash qui scrute un fichier logs à la recherche d'erreur. Ce script doit prendre en entrée un fichier de paramètres qui indiquent la log à surveiller et les patterns qu'il faut trouver. A chaque passage du script uniquement les nouvelles entrées doivent être signalées au fichier Alarme.log.
Si quelqu'un pouvait me donner une base de départ de ce script ??
je le modifierai par la suite.
Merci d'avance.
# Bien sûr!
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 4.
#!/bin/sh
La gelée de coings est une chose à ne pas avaler de travers.
[^] # Re: Bien sûr!
Posté par juju75020 . Évalué à 1.
Mon script commencerait par :
while read fichier_log
do ...
Si tu peux un peu plus me renseigner ce serait sympa.
Merci
# logtail
Posté par towanda . Évalué à 2.
http://packages.debian.org/stable/admin/logtail
[^] # Re: logtail
Posté par denix . Évalué à 1.
tail -n 0 -f mon_fichier_qui_va_bien | while read line ; do
echo $line | truc_qui_recherche_des_patterns ;
done ;
Le tail -f sert à afficher les nouvelles lignes.
Le -n 0 permet de ne pas afficher les 10 dernières lignes
man tail !
[^] # Re: logtail
Posté par totof2000 . Évalué à 2.
while read line ; do
echo $line | truc_qui_recherche_des_patterns ;
done ; :)
par awk qui est justement fait pour ça !!!!
# Script shell
Posté par Pol' uX (site web personnel) . Évalué à 3.
Voici un petit script que j'ai écrit ya pas longtemps, ca peux peut etre te donner une idée de l'utilisation de grep, sed, awk, etc... Exécute le ligne par ligne et tu finira par tout maitriser.
Adhérer à l'April, ça vous tente ?
[^] # Re: Script shell
Posté par totof2000 . Évalué à 2.
cat makeRSS.do | grep title | sed -e 's///' | sed -e 's/<\/title>//'
Beurk !!!! Pas de cat | grep, M*%$+!
grep title makeRSS.do |grep title |....
Je comprend pas le pourquoi du sed -e 's///'. De plus il doit être possible d'éviter le sed xxx | sed yyy avec un sed 'xxx yyy' bien senti.
cat makeRSS.do | tr -t '"' " " | sed -e 's/mp3/ogg/' | sed -e 's/_hq//' | awk '/enclosure/ {print $3}' > urlList
Même remarque pour le cat.
Sinon un truc comme ça devrait faire l'affaire:
awk '/enclosure/ {
sub(/mp3/,"ogg",$3)
sub(/_hq/,"",$3)
print $3
}' makeRSS.do > urlList
Je suppose que le remplacement de chaine se fait sur $3
Ensuite:
filename=`echo $url | tr "/" " " | awk '{print $4}'
filename=`echo $url | awk '{
sub("/"," ",$4);print $4}'
Je suis de plus convaincu que ta boucle "while " pourrait être remplacé par un awk. J'irais plus loin en disant que ce que tu fais dans ta boucle while pourrait être intégré dans la boucle générant le fichier urlList.
J'ai des idées mais pas le temps pour le moment de tout écrire. A la limite si ca t'intéresse de voir ce que ça fait en awk, essaie de me fournir un bout de fichier d'entrée que je puisse tester plus tard ...
[^] # Re: Script shell
Posté par Pol' uX (site web personnel) . Évalué à 2.
Adhérer à l'April, ça vous tente ?
# juste pour info ....
Posté par totof2000 . Évalué à 2.
Te rend-tu compte que tu décris précisément le fonctionnement de la commande Awk?
extrait de la page man de awk sous aix:
awk Command
Purpose
Finds lines in files that match patterns and then performs specified actions on them.
(...)
Description
The awk command utilizes a set of user-supplied instructions to compare a set of files, one line at a time, to extended regular expressions supplied by the user. Then actions are performed upon any line that matches the extended regular expressions.
(...)
Flags
-f ProgramFile Obtains instructions for the awk command from the file specified by the ProgramFile variable. If the -f flag is specified multiple times, the concatenation of the files, in the order specified, will be used as the set of instructions.
A chaque passage du script uniquement les nouvelles entrées doivent être signalées au fichier Alarme.log.
Avec Awk, tu peux compter le nombrer d'enregistrement (autrement dit de lignes) contenu dans un fichier. Donc a chaque passage, tu peux écrire quelque part le nombre de lignes lues. Attention cependant, si le fichier de log en question vient à être "vidé", il faudra que le script le prenne en compte.
# et perl?
Posté par eMerzh (site web personnel) . Évalué à 0.
parce que dès qu'on parle de patern, de fichier log, .... j'aurais tendance à dirigé vers perl....
[^] # Re: et perl?
Posté par totof2000 . Évalué à 3.
awk permet de faire pas mal de choses et est suffisant dans beaucoup de cas. Il traite les tableaux (tableaux associatifs, avec simulation de tableaux a plusieurs dimensions). Par contre il n'a pas de système de référencement de variables comme Perl, et il est vrai que c'est parfois gênant (c'est dans ces cas là que je me tourne vers Perl).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.