Re: [SSFR] Bash + log come back |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
Hello
Debian Debutant a écrit :
Bonsoir,
J'ai fait une moulinette mais ça déconne avec grep, ça à l'air de
marcher mais il m'affiche des conneries à la fin du script. J'ai essayé
de tout faire ressortir à l'écran pour controler le résultat.
cat fichier_fin | cut -d: -f 3 | sort -u > nbrehost
ca me permet de chopper tout les hosts le sort -u pour virer les
doublons.
ensuite je grep le nom d'hote et et cherche la ligne de début et de fin
cat < nbrehost | while true
do
read LIGNE
cat fichier_fin | grep -e $LIGNE | head -1
cat fichier_fin | grep -e $LIGNE | tail -1
LIGNE=0
done
Ca fonctionne mais j'ai un soucis le script ne s'arrete pas, mais j'ai
bien l'impression qu'il fait son boulot.
Souviens-toi de ma première réponse..
while read -r LIGNE
La redirection d'entrée de 'cat' est superflue: cat nbrehost = cat <
nbrehost
Cat lui-même est redondant:
while read -r LIGNE < nbrehost
Pour finir, je ne saisis absolument pas ce que tu essaies de faire.. :-)
N'est-il pas plus simple de coller tous les logs dans un fichier par
machine puis, comme le disait Eric, lire la première et la dernière ligne ?
Sinon, sans vouloir jouer les trublions, y'a un langage adapté pour ça,
qui est l'acronyme de Practical Extraction and Report Language.
(aïe, pas la tête..)
pj
J'ai tester de remettre à Zero la variable LIGNE, mais keunini
Le 10/08/05 at 15:37, Daniel C a ecrit:
debian user wrote:
J'ai un nouveau besoin, voilà :
mon fichier de log s'organise comme ceci :
[09-08-2005: 19-26-12]:AD2P-D4-APP-ABO01-06: message erreur
[09-08-2005: 19-30-12]:AD2P-D4-APP-ABO01-06: message erreur
[la date : l'heure]:La machine: le message d'erreur
je tri sur le nom de machine et sur l'heure, j'ai donc une heure de
départ et une heure de fin par machine.
Et comment tu devines si c'est départ ou fin ?
j'aimerai en fait faire une moulinette qui me permmette de récupérer
l'heure de départ et de fin pour chaque machine.
Si tu nous dit pas comment savoir si c'est début ou fin, ça va pas être
facile.
pour savoir l'heure à laquelle j'ai eu la première alerte et l'heure de
la dernière alerte par machine.
Et là je suis largué pour faire un truc pareil :)
c'est à priori pas si simple, masi sed sait faire ça.
En revanche, je saurais pas trop te pondre le script sed
Un truc du genre
cat log | sed -f /pattern_debut/,/pattern_fin/!d > log2
devrait permettre de sortir le 1er bloc debut-fin.
Ensuite
head -1 log2 > ligne_debut
tail -1 log2 > ligne_fin
mais après il faut recommencer en virant ces 2 lignes du log. grep -v
peut le faire mais ça me parait bourrin.
Y'a sûrement moyen de faire mieux, mais ça devrait marcher (à mes
erreurs de syntaxe près).
Daniel
PS, s'il n'y a pas de différence début fin, et que la 1ere apparition
d'un host est le début et la suivante la fin (et ainsi de suite), c'est
beaucoup plus simple (une boucle et un grep suffisent) mais ça m'étonnerait.
PS2: Comme dit Edi, évite les cross-post (surtout à 2h d'intervalle,
tout le monde n'est pas forcément dispo dans la minute pour te répondre).
fin du message de Daniel C
--
Sparx Inc.
77 Avenue raymond Poincaré
75016 Paris
Tel. +33 (0) 1 44 34 29 21
Std +33 (0) 1 44 34 29 29
Fax +33 (0) 1 55 73 17 07
http://www.sparx.com
begin:vcard
fn:Philippe Jacquot
n:Jacquot;Philippe
org:Sparx
adr:;;77 avenue Poincare;Paris;;75116;France
email;internet:philippe.j@xxxxxxxxx
title:System administrator
tel;work:+33 (0) 1 44 34 29 21
tel;fax:+33 (0) 1 55 73 17 07
x-mozilla-html:FALSE
url:http://www.sparx.com
version:2.1
end:vcard