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



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/