Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Surveiller un fichier log

29 réponses
Avatar
Serge Nazarian
Bonjour,

Je désire entreprendre une action dès qu'une certaine ligne est écrite dans
un fichier de log.
Quelqu'un aurait-il une idée sur la manière de procéder.

Merci pour toute aide.
Cordialement,
--
Serge Nazarian

Cliquez ci dessous pour une réponse personnelle :
http://cerbermail.com/?CBBJUUv0pN

10 réponses

1 2 3
Avatar
Zeyes
Bonjour,

Je désire entreprendre une action dès qu'une certaine ligne est écrite dans
un fichier de log.
Quelqu'un aurait-il une idée sur la manière de procéder.

Merci pour toute aide.
Cordialement,
--
Serge Nazarian

Cliquez ci dessous pour une réponse personnelle :
http://cerbermail.com/?CBBJUUv0pN

Mais y'aurait pas un module du noyeau qui permettrait de hooker le

fwrite pour surveiller une liste de fichiers (dans /etc/truc.conf), et
de lancer une action?
Ca serait plus cool que de faire une surveillance par iterations

Avatar
Luc.Habert.00__arjf
Zeyes :

Si c'est syslogd, c'est encore plus facile, on peut lui demander d'envoyer
une copie de ce qu'il loggue dans un pipe nommé.
Ca resoud le probleme? On peut surveiller un pipe nomme?



Bein tu écris un script de quelques lignes dans le langage de ton choix...


Avatar
Zeyes
Zeyes :

Si c'est syslogd, c'est encore plus facile, on peut lui demander d'envoyer
une copie de ce qu'il loggue dans un pipe nommé.
Ca resoud le probleme? On peut surveiller un pipe nomme?



Bein tu écris un script de quelques lignes dans le langage de ton choix...
Ca veut dire qu'on peut rester en attente de l'arrivees de donnees dans

le pipe?
Pourquoi ca marcherait pas avec un fichier?
Je ne sais pas lire un pipe nomme dans un script... tu fais comment?
J'ai fouille dans le man... mais pas gargle
Je continue a chercher....



Avatar
Luc.Habert.00__arjf
Zeyes :

Ca veut dire qu'on peut rester en attente de l'arrivees de donnees dans
le pipe?


Oui, c'est le principe d'un pipe. Si tu essayes de lire dessus le noyau
te bloque jusqu'à ce qu'un autre process se mette à écrire dedans.

Pourquoi ca marcherait pas avec un fichier?


Parce que c'est comme ça. Quand ta tête de lecture est à la fin du fichier,
et que tu demandes à lire, le noyau te rend la main immédiatement en te
disant qu'il n'y a rien à lire.

Je ne sais pas lire un pipe nomme dans un script... tu fais comment?


Comme si c'était un fichier (la seule différence est que tu n'as pas le
droit de déplacer la tête de lecture, vu qu'il n'y en a pas). Par exemple,
en perl :

while (<>) {
if (/motif recherché/) {
action
}
}

Avatar
Zeyes
Zeyes :

Ca veut dire qu'on peut rester en attente de l'arrivees de donnees dans
le pipe?


Oui, c'est le principe d'un pipe. Si tu essayes de lire dessus le noyau
te bloque jusqu'à ce qu'un autre process se mette à écrire dedans.

Pourquoi ca marcherait pas avec un fichier?


Parce que c'est comme ça. Quand ta tête de lecture est à la fin du fichier,
et que tu demandes à lire, le noyau te rend la main immédiatement en te
disant qu'il n'y a rien à lire.

Je ne sais pas lire un pipe nomme dans un script... tu fais comment?


Comme si c'était un fichier (la seule différence est que tu n'as pas le
droit de déplacer la tête de lecture, vu qu'il n'y en a pas). Par exemple,
en perl :

while (<>) {
if (/motif recherché/) {
action
}
}
Ah, j'ai trouve un truc, en C:

fnctl()
extrait:
"
F_NOTIFY
(Nouveauté Linux 2.4) Fournit un avertissement lorsque le
répertoire correspondant à fd ou l'un des fichiers qu'il contient est
modifié. Les événements à notifier sont précisés dans arg,
"
mais pour catcher les signaux, j'ai sigaction().
Ca te semble correct?
Avec ca, on ecrire un petit bout de code pour attendre la modif d'un
fichier et lancer une commande (en parametres)
Je vais voir


Avatar
Nicolas George
Zeyes wrote in message <46221c3e$0$27388$:
Ah, j'ai trouve un truc, en C:
fnctl()
extrait:
"
F_NOTIFY
(Nouveauté Linux 2.4) Fournit un avertissement lorsque le
répertoire correspondant à fd ou l'un des fichiers qu'il contient est
modifié. Les événements à notifier sont précisés dans arg,
"
mais pour catcher les signaux, j'ai sigaction().
Ca te semble correct?


Non, absolument rien à voir. Relis le message de Luc.

Avatar
Nicolas George
Zeyes wrote in message <46220fda$0$5086$:
Mais y'aurait pas un module du noyeau qui permettrait de hooker le
fwrite


Aucune chance, le noyau n'a rien à voir avec fwrite.

pour surveiller une liste de fichiers (dans /etc/truc.conf), et
de lancer une action?
Ca serait plus cool que de faire une surveillance par iterations


Il y a inotify pour surveiller des fichiers, mais c'est absolument hors
sujet ici.

Avatar
Zeyes
Zeyes wrote in message <46221c3e$0$27388$:
Ah, j'ai trouve un truc, en C:
fnctl()
extrait:
"
F_NOTIFY
(Nouveauté Linux 2.4) Fournit un avertissement lorsque le
répertoire correspondant à fd ou l'un des fichiers qu'il contient est
modifié. Les événements à notifier sont précisés dans arg,
"
mais pour catcher les signaux, j'ai sigaction().
Ca te semble correct?


Non, absolument rien à voir. Relis le message de Luc.
Ben j'essaye quand meme... mais j'ai des pb de compilation....

Eh mais au fait ma ligne
tail -f fichier.log | gawk '/toto/ { print "coucou" }'
Marcherais pas?
Pourquoi?
Ca mange pas trop de cpu tail -F ?


Avatar
Zeyes
Zeyes wrote in message <46220fda$0$5086$:
Mais y'aurait pas un module du noyeau qui permettrait de hooker le
fwrite


Aucune chance, le noyau n'a rien à voir avec fwrite.
Ben on passe bien, a un moment ou un autre par un point commun lors

d'une ecriture dans un truc (pipe, fichier...), non?

pour surveiller une liste de fichiers (dans /etc/truc.conf), et
de lancer une action?
Ca serait plus cool que de faire une surveillance par iterations


Il y a inotify pour surveiller des fichiers, mais c'est absolument hors
sujet ici.
Ben il me semblait qu'avant de voir si une ligne speciale est arrivee

dans le log, il faut qu'il ait ete modifie, et donc, qu'on soit prevenu.


Avatar
Nicolas George
Zeyes wrote in message <46224768$0$25922$:
Ben on passe bien, a un moment ou un autre par un point commun lors
d'une ecriture dans un truc (pipe, fichier...), non?


Oui, mais ce n'est pas fwrite. Ton problème, c'est que tu essaies d'employer
des notions qui sont au delà de ton niveau. Forcément, tu te plantes.
Restes-en à ce que tu sais, n'emploie pas du vocabulaire dont tu ne connais
le sens qu'approximativement, n'essaie pas de programmer fcntl avant de
savoir faire un hello world, et tout ira mieux.

Ben il me semblait qu'avant de voir si une ligne speciale est arrivee
dans le log, il faut qu'il ait ete modifie, et donc, qu'on soit prevenu.


C'est à ça que servent les pipes, justement.

1 2 3