Re: Petit problème de programation

トップ ページ

このメッセージに返信
著者: Patrice Karatchentzeff
日付:  
To: guilde
CC: guilde
題目: Re: Petit problème de programation
Le 25 juin 2008 15:47, Jean-Michel Bonnefond <pompon2@???> a écrit :
>
> Bonjour a tous,
>
> Je souhaiterai écrire une petit programe probablement en bash, perl, awk ou
> autre peu importe, qui me permette d'afficher un fichier de log de facon
> selective.
>
> Il s'agit de logs radius qui se présentent par blocs, exemple :
>
> Packet-Type = Access-Request
> Thu Jun 24 23:58:07 2008
>         User-Name = "jp1234@???"
>         User-Password = "******"
>         NAS-IP-Address = 192.168.20.1
>         Framed-IP-Address = 192.168.30.2
>         NAS-Identifier = "Virtual-NASMONITOR"
>         Proxy-State = 0x3932
>         Client-IP-Address = 199.33.33.199

>
> Packet-Type = Access-Accept
> Thu Jun 24 23:58:07 2008
>         NAS-IP-Address = 192.168.20.1
>         Client-IP-Address = 199.33.33.199
>         Realm = "dummy.fr"

>
> Je voudrais afficher en temps réel dans un terminal (l'equivalent d'un "tail
> -f "), ou stocker dans un fichier tous les blocs qui contiennent un pattern
> particulier, par exemple une adresse ip précise.
>
> Mon probleme c'est d'afficher le bloc complet, les blocs étant séparé par
> une ligne vide et la valeur recherhé pouvant se situer a n'importe quel
> endroit du bloc, qui n'a de plus pas une longueur fixe.


Ce n'est pas clair ton truc : ton exemple ci-dessus vaut quoi ? C'est
un extrait ou tout le log est déjà partitionné en block (auquel cas ça
répond à ta question).

Si je comprends bien tu veux ne sortir que les blocks et ils
commencent tous par Packet-Type et ils finissent par une ligne vide ?

Si c'est le cas, c'est relativement trivial :

#!/usr/bin/perl

use strict;
use warnings;

my $block = "0";

while(<>) {
$block = "1" if ( /^Packet-Type/ );
$block = "0" if ( /^$/ );
print if ( $block eq "1" );
};

PK

--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:p.karatchentzeff@free.fr
|,4- ) )-,_. ,\ ( `'-' http://p.karatchentzeff.free.fr
'---''(_/--' `-'\_)