j'ai un script qui parse "en temps r=E9el" les logs de mon firewall; il=20
lit disons 100 lignes de log puis il exporte les lignes valides dans une =
base de donn=E9es postgres (les insert sont group=E9s dans une seule=20
transaction pour limiter l'activit=E9 sur la base en cas de gros pic). En=
=20
generale, il faut entre 1/2H et 2H pour collecter 100 lignes.
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes =
ou 100 lignes". Existe-t-il une m=E9thode autre que de comparer l'heure=20
actuelle avec l'heure d'ex=E9cution voulue?
Toute id=E9e, url ou pointeur vers la doc sont les bien venus...
Merci d'avance,
MaXX
Le script en (pseudo-)code super all=E9g=E9:
my $log_ref=3Dtie *LOG,"File::Tail",(name=3D> $log ,tail=3D>0, adjustafte=
r=3D>2);
while (1) {
my $line=3D<LOG>;
&parse($line);
};
sub parse{
#plein de tests sur la ligne
if (tests OK){
#mettre $line_ok dans $hash{$counter}
#counter++
};
if ($counter>=3D$counter_max){
#export vers DB Postgres
&db_export(%hash);
};
};
sub db_export{
# INSERTs; if (OK){COMMIT}else{ROLLBACK} (dbd::pg autocommit=3D>0)
};
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Newsgroups
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue?
Toute idée, url ou pointeur vers la doc sont les bien venus...
pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement une tâche cron qui lance le script toutes les 15 minutes.
il faut entre 1/2H et 2H pour collecter 100 lignes. si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à l'allocation mémoire.)
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes
ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure
actuelle avec l'heure d'exécution voulue?
Toute idée, url ou pointeur vers la doc sont les bien venus...
pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement
une tâche cron qui lance le script toutes les 15 minutes.
il faut entre 1/2H et 2H pour collecter 100 lignes.
si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à
l'allocation mémoire.)
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue?
Toute idée, url ou pointeur vers la doc sont les bien venus...
pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement une tâche cron qui lance le script toutes les 15 minutes.
il faut entre 1/2H et 2H pour collecter 100 lignes. si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à l'allocation mémoire.)
MaXX
Bonjour,
Newsgroups wrote:
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minut es ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heur e actuelle avec l'heure d'exécution voulue? Toute idée, url ou pointeur vers la doc sont les bien venus... pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement
une tâche cron qui lance le script toutes les 15 minutes.
Je me suis peut être mal exprimé... Le script fonctionne en gros comme la commande 'tail -F ./file.log' et génère en temps-réel certaines "alertes" que j'ai définies et me les transmet par mail, ce qui rend (ou plutot essaye de rendre) l'effacage des logs inutile vu que l'alerte a déjà été propagée, il doit d onc tourner tout le temps. Je précise, ce truc est un "jouet" pour tuer le temps les jours pluvieu x où il n'y a rien de plus intéressant à faire...
Ce que je voudrais c'est en quelque sorte "générer un événement" dans le script pour vider le buffer des messages "non-prioritaires" toute les 15 min ou 100 ligne. Je suis en train de regarder du côté du module Event sur CPAN qui a l'air de faire ce que je veux, mais implique la réecriture d'un partie importante du script.
il faut entre 1/2H et 2H pour collecter 100 lignes. si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à l'allocation mémoire.)
A présent, une seule suffit et elle n'est pas gourmande...
Merci pour la réponse en tout cas, -- MaXX
Bonjour,
Newsgroups wrote:
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minut es
ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heur e
actuelle avec l'heure d'exécution voulue?
Toute idée, url ou pointeur vers la doc sont les bien venus...
pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement
une tâche cron qui lance le script toutes les 15 minutes.
Je me suis peut être mal exprimé...
Le script fonctionne en gros comme la commande 'tail -F ./file.log' et
génère en temps-réel certaines "alertes" que j'ai définies et me les
transmet par mail, ce qui rend (ou plutot essaye de rendre) l'effacage
des logs inutile vu que l'alerte a déjà été propagée, il doit d onc
tourner tout le temps.
Je précise, ce truc est un "jouet" pour tuer le temps les jours pluvieu x
où il n'y a rien de plus intéressant à faire...
Ce que je voudrais c'est en quelque sorte "générer un événement" dans le
script pour vider le buffer des messages "non-prioritaires" toute les 15
min ou 100 ligne.
Je suis en train de regarder du côté du module Event sur CPAN qui a
l'air de faire ce que je veux, mais implique la réecriture d'un partie
importante du script.
il faut entre 1/2H et 2H pour collecter 100 lignes.
si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à
l'allocation mémoire.)
A présent, une seule suffit et elle n'est pas gourmande...
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minut es ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heur e actuelle avec l'heure d'exécution voulue? Toute idée, url ou pointeur vers la doc sont les bien venus... pour ma part, je ne réinventerai pas la roue, j'utiliserai simplement
une tâche cron qui lance le script toutes les 15 minutes.
Je me suis peut être mal exprimé... Le script fonctionne en gros comme la commande 'tail -F ./file.log' et génère en temps-réel certaines "alertes" que j'ai définies et me les transmet par mail, ce qui rend (ou plutot essaye de rendre) l'effacage des logs inutile vu que l'alerte a déjà été propagée, il doit d onc tourner tout le temps. Je précise, ce truc est un "jouet" pour tuer le temps les jours pluvieu x où il n'y a rien de plus intéressant à faire...
Ce que je voudrais c'est en quelque sorte "générer un événement" dans le script pour vider le buffer des messages "non-prioritaires" toute les 15 min ou 100 ligne. Je suis en train de regarder du côté du module Event sur CPAN qui a l'air de faire ce que je veux, mais implique la réecriture d'un partie importante du script.
il faut entre 1/2H et 2H pour collecter 100 lignes. si mes calculs sont bon, vous devriez avoir entre 2 et 8 instances de
scripts en continue... (il va donc falloir faire attention à l'allocation mémoire.)
A présent, une seule suffit et elle n'est pas gourmande...
Merci pour la réponse en tout cas, -- MaXX
Loïc Restoux
Le 12 aoû, à 09:02, MaXX papotait :
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue?
Détourner SIGALARM.
$SIG{ ALRM } = sub { mafonction; }; alarm $duree;
Voir perldoc -f alarm
(Comment ça, j'ai déjà écrit la même chose il y a quelque temps ?)
-- No fortunes found
Le 12 aoû, à 09:02, MaXX papotait :
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes
ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure
actuelle avec l'heure d'exécution voulue?
Détourner SIGALARM.
$SIG{ ALRM } = sub { mafonction; };
alarm $duree;
Voir perldoc -f alarm
(Comment ça, j'ai déjà écrit la même chose il y a quelque temps ?)
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue?
Détourner SIGALARM.
$SIG{ ALRM } = sub { mafonction; }; alarm $duree;
Voir perldoc -f alarm
(Comment ça, j'ai déjà écrit la même chose il y a quelque temps ?)
-- No fortunes found
MaXX
Loïc Restoux wrote:
Le 12 aoû, à 09:02, MaXX papotait :
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue? Détourner SIGALARM.
Il faut que je vérifie un truc avec Tail, depuis que j'utilise ce modul e
j'ai du virer toutes la gestions de signaux (notamment HUP qui déclenchait la vidange du "buffer"). Je ne serais pas étonné qu'il utilise certains signaux pour lui, à moins que j'ai commenté ça pou r un test et que j'ai oublié pq je ne l'ai pas réactivé... A tester.
$SIG{ ALRM } = sub { mafonction; }; alarm $duree; Voir perldoc -f alarm (Comment ça, j'ai déjà écrit la même chose il y a quelque te mps?) qqch comme 5 Octobre 05 d'apres google groups, mais avec les termes que
j'avais utilisé je ne serais pas tombé dessus...
Merci en tt cas, -- MaXX
Loïc Restoux wrote:
Le 12 aoû, à 09:02, MaXX papotait :
Je voudrais changer le 100 lignes, en par exemple, "toute les 15
minutes ou 100 lignes". Existe-t-il une méthode autre que de
comparer l'heure actuelle avec l'heure d'exécution voulue?
Détourner SIGALARM.
Il faut que je vérifie un truc avec Tail, depuis que j'utilise ce modul e
j'ai du virer toutes la gestions de signaux (notamment HUP qui
déclenchait la vidange du "buffer"). Je ne serais pas étonné qu'il
utilise certains signaux pour lui, à moins que j'ai commenté ça pou r un
test et que j'ai oublié pq je ne l'ai pas réactivé... A tester.
$SIG{ ALRM } = sub { mafonction; };
alarm $duree;
Voir perldoc -f alarm
(Comment ça, j'ai déjà écrit la même chose il y a quelque te mps?)
qqch comme 5 Octobre 05 d'apres google groups, mais avec les termes que
Je voudrais changer le 100 lignes, en par exemple, "toute les 15 minutes ou 100 lignes". Existe-t-il une méthode autre que de comparer l'heure actuelle avec l'heure d'exécution voulue? Détourner SIGALARM.
Il faut que je vérifie un truc avec Tail, depuis que j'utilise ce modul e
j'ai du virer toutes la gestions de signaux (notamment HUP qui déclenchait la vidange du "buffer"). Je ne serais pas étonné qu'il utilise certains signaux pour lui, à moins que j'ai commenté ça pou r un test et que j'ai oublié pq je ne l'ai pas réactivé... A tester.
$SIG{ ALRM } = sub { mafonction; }; alarm $duree; Voir perldoc -f alarm (Comment ça, j'ai déjà écrit la même chose il y a quelque te mps?) qqch comme 5 Octobre 05 d'apres google groups, mais avec les termes que