Re: Petit problème de programation

トップ ページ

このメッセージに返信
著者: Jean-Michel Bonnefond
日付:  
To: jeanluc, guilde
題目: Re: Petit problème de programation
Bonjour,

Merci Jean-Luc, je me doutais bien que perl était mon ami :-D
Effectivement, j'ai tésté et ton petit script correspond parfaitement a mon
besoin,

Encore merci pour vos aide...

Jean-Michel.


Le 25 juin 2008 23:18, jeanluc <jeanluctux@???> a écrit :

> Bonjour,
>
> Je pense que c'est plus facile en perl.
> Possible que c'est faisable en bash mais après, tu vas vouloir devenir plus
> exigeant
> (rajouter ceci, rajouter cela) et puis au final, tu finiras en perl. C'est
> souvent ce qui
> m'arrive.
> Jette un coup d'oeil sur ce qui j'ai fait .... quasiment pendant les
> coupures du match
> de l'Allemagne ... j'ai fini le match avec la radio ... comme ca, on peut
> bricoler un peu
> sur l'ordi.
> ..... alors, je disais, jette un coup d'oeil et puis ca sera déjà une base
> de départ pur toi.
>
> prompt> cat mesLogs.txt
> 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"

>
> prompt>
> prompt>
> prompt> cat mesLogs.txt |grepOnBloc.pl Virtual
> 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
> ...... 1 ......
> prompt> tail -f /var/log/mesLogs.log | grepOnBloc.pl Virtual
> ....
> prompt>
> prompt>
> prompt> cat $HOME/bin/grepOnBloc.pl
> #!/usr/bin/perl
> my $line;
> my $imprimeCeBloc=0;
> my @mesLignes=();

>
> my $keyword=shift;
>
> while( <> ) {
>    $line = $_;
>    if( $line =~ m/^\s*$/       )
>    {
>        if( $imprimeCeBloc )
>        {
>            foreach $i (@mesLignes)
>            {
>                print $i;
>            };
>            print "\n.... $imprimeCeBloc ... \n";  # debug seulement ... à
> supprimer
>        };
>        @mesLignes=();
>        $imprimeCeBloc = 0;
>    } else {
>        push @mesLignes , $line;
>        if( $line =~ m/${keyword}/ )
>        {
>            $imprimeCeBloc++;
>        };
>    };
> }

>
>
>
> >
> > 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 qui me manque principalement c'est une programme qui soit en écoute à
> la
> > fin du fichier de log, qui stocke ce qu'il recoit jusqu'a recevoir une
> > marque de fin de bloc, puis envoie ce bloc complet en traitement à un
> autre
> > programme par exemple.
> >
> > Une idée?
> > Merci,
> >
> > Jean-Michel.
> >
>
>