Bonsoir David, bonsoir tout le monde,
Le 2025-01-02 09:09, David BERCOT a écrit :
Ainsi, la forme de règle qu'on retrouve habituellement est la suivante
:
^\w{3} [ :[:digit:]]{11} [-._[:alnum:]]+ systemd\[1\]: Started [-/:. [:alnum:]]+$
Et cela fonctionne bien pour, par exemple :
Jan 1 19:12:38 debian systemd[1]...
Maintenant, j'ai constaté que, selon les fichiers de logs, j'avais
aussi :
Jan. 1
Janv. 1
Dec 31
Dec. 31
Déc 31
Je décompose tes exemples ainsi :
* La ligne commence par le mois, indiqué sur 3 à 4 caractères
* Suivi d'un point optionnel
* Suivi de un espace
* Suivi du jour du mois, calé ou non sur 2 caractères (et de l'heure),
ce qui donne une suite de 10 à 11 chiffres, espaces et deux-points
* Etc.
Si tu as bien ces variations, la bonne expression rationnelle est :
^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+
systemd\[[[:digit:]]+\]: .*$
Si on décompose :
* ^\w{3,4} : La ligne commence par le mois, indiqué sur 3 à 4 caractères
* \.? : Suivi d'un point optionnel
* : Suivi de un espace
* [ :[:digit:]]{10,11} : Suivi du jour du mois, calé ou non sur 2 caractères (et de l'heure), ce qui donne une suite de 10 à 11 chiffres, espaces et deux-points
* Etc.
Tu noteras que j'ai opté pour l'expression :
systemd\[[[:digit:]]+\]:
Et non :
systemd\[1\]:
Car le PID du processus systemd n'est pas toujours 1. En fait, il y a
plusieurs processus systemd. Voici ce que j'ai sur mon serveur :
$ ps axf | grep '/systemd ' | grep -v grep
1 ? Ss 1:36 /usr/lib/systemd/systemd --system --deserialize=116
4059223 ? Ss 0:00 /usr/lib/systemd/systemd --user
Maintenant un exemple sur pièce :
Je crée le fichier de log avec les messages que je veux capturer :
$ cat > /tmp/log <<EOF
Jan. 1 22:08:01 debian systemd[1]: Starting [email protected]e - User
Manager for UID 0...
Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default
target default.target.
Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice.
Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.target - Paths.
Déc 31 22:08:01 debian systemd[1]: Starting [email protected]e - User
Manager for UID 0...
EOF
Puis je crée le fichier de règles :
$ cat > /tmp/rules <<EOF
^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+
systemd\[[[:digit:]]+\]: .*$
EOF
Puis je vérifie quels messages sont capturés par mes (enfin, ici, ma)
règles :
$ logcheck-test -l /tmp/log -r /tmp/rules
Jan. 1 22:08:01 debian systemd[1]: Starting
[email protected]e - User
Manager for UID 0...
Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default
target default.target.
Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice.
Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.target -
Paths.
Déc 31 22:08:01 debian systemd[1]: Starting
[email protected]e - User
Manager for UID 0... ================================================================================
parsed file: /tmp/log
used rule file: /tmp/rules
Les 5 lignes sont bien capturées, ma règle fonctionne.
A++, Sébastien
--
Sébastien Dinot
Ne goutez pas au logiciel libre, vous ne pourriez plus vous en passer !
https://www.palabritudes.net/
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<div style="font-size: 10pt; font-family: Verdana,Geneva,sans-serif;"> <p>Bonsoir David, bonsoir tout le monde,</p>
<p>Le 2025-01-02 09:09, David BERCOT a écrit :</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<p>Ainsi, la forme de règle qu'on retrouve habituellement est la suivante :<br />^\w{3} [ :[:digit:]]{11} [-._[:alnum:]]+ systemd\[1\]: Started [-/:. [:alnum:]]+$<br />Et cela fonctionne bien pour, par exemple :<br />Jan 1 19:12:38 debian
systemd[1]...<br />Maintenant, j'ai constaté que, selon les fichiers de logs, j'avais aussi :<br />Jan. 1<br />Janv. 1<br />Dec 31<br />Dec. 31<br />Déc 31</p>
</blockquote>
<p>Je décompose tes exemples ainsi :</p>
<li>La ligne commence par le mois, indiqué sur 3 à 4 caractères</li>
<li>Suivi d'un point optionnel</li>
<li>Suivi de un espace</li>
<li>Suivi du jour du mois, calé ou non sur 2 caractères (et de l'heure), ce qui donne une suite de 10 à 11 chiffres, espaces et deux-points</li>
<li>Etc.</li>
</ul>
<p>Si tu as bien ces variations, la bonne expression rationnelle est :</p> <p><span style="font-family: 'courier new', courier, monospace;">^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+ systemd\[[[:digit:]]+\]: .*$</span></p>
<p>Si on décompose :</p>
<li><span style="font-family: 'courier new', courier, monospace;"><strong>^\w{3,4}</strong></span> : La ligne commence par le mois, indiqué sur 3 à 4 caractères</li>
<li><span style="font-family: 'courier new', courier, monospace;"><strong>\.?</strong></span> : Suivi d'un point optionnel</li>
<li><strong><span style="font-family: 'courier new', courier, monospace;"> </span> </strong>: Suivi de un espace</li>
<li><span style="font-family: 'courier new', courier, monospace;"><strong>[ :[:digit:]]{10,11}</strong></span> : Suivi du jour du mois, calé ou non sur 2 caractères (et de l'heure), ce qui donne une suite de 10 à 11 chiffres, espaces
et deux-points</li>
<li>Etc.</li>
</ul>
<p>Tu noteras que j'ai opté pour l'expression :</p>
<p><span style="font-family: 'courier new', courier, monospace;">systemd\[[[:digit:]]+\]:</span></p>
<p>Et non :</p>
<p><span style="font-family: 'courier new', courier, monospace;">systemd\[1\]:</span></p>
<p>Car le PID du processus systemd n'est pas toujours 1. En fait, il y a plusieurs processus systemd. Voici ce que j'ai sur mon serveur :</p>
<p><span style="font-family: 'courier new', courier, monospace;">$ ps axf | grep '/systemd ' | grep -v grep</span><br /><span style="font-family: 'courier new', courier, monospace;"> 1 ? Ss 1:
36 /usr/lib/systemd/systemd --system --deserialize=116</span><br /><span style="font-family: 'courier new', courier, monospace;">4059223 ? Ss 0:00 /usr/lib/systemd/systemd --user</span></p>
<p>Maintenant un exemple sur pièce :</p>
<p>Je crée le fichier de log avec les messages que je veux capturer :</p>
<p><span style="font-family: 'courier new', courier, monospace;">$ cat > /tmp/log <<EOF</span><br /><span style="font-family: 'courier new', courier, monospace;">> Jan. 1 22:08:01 debian systemd[1]: Starting
[email protected]e - User
Manager for UID 0...</span><br /><span style="font-family: 'courier new', courier, monospace;">> Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default target default.target.</span><br /><span style="font-family: 'courier new', courier,
monospace;">> Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice.</span><br /><span style="font-family: 'courier new', courier, monospace;">> Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.
target - Paths.</span><br /><span style="font-family: 'courier new', courier, monospace;">> Déc 31 22:08:01 debian systemd[1]: Starting
[email protected]e - User Manager for UID 0...</span><br /><span style="font-family: 'courier new', courier,
monospace;">> EOF</span></p>
<p>Puis je crée le fichier de règles :</p>
<p><span style="font-family: 'courier new', courier, monospace;">$ cat > /tmp/rules <<EOF</span><br /><span style="font-family: 'courier new', courier, monospace;">> ^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+ systemd\[[[:digit:]]+\]: .*$
</span><br /><span style="font-family: 'courier new', courier, monospace;">> EOF</span></p>
<p>Puis je vérifie quels messages sont capturés par mes (enfin, ici, ma) règles :</p>
<p><span style="font-family: 'courier new', courier, monospace;">$ logcheck-test -l /tmp/log -r /tmp/rules </span><br /><span style="font-family: 'courier new', courier, monospace;">Jan. 1 22:08:01 debian systemd[1]: Starting
[email protected]e -
User Manager for UID 0...</span><br /><span style="font-family: 'courier new', courier, monospace;">Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default target default.target.</span><br /><span style="font-family: 'courier new', courier,
monospace;">Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice.</span><br /><span style="font-family: 'courier new', courier, monospace;">Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.target -
Paths.</span><br /><span style="font-family: 'courier new', courier, monospace;">Déc 31 22:08:01 debian systemd[1]: Starting
[email protected]e - User Manager for UID 0...</span><br /><span style="font-family: 'courier new', courier, monospace;">======
==========================================================================</span><br /><span style="font-family: 'courier new', courier, monospace;">parsed file: /tmp/log</span><br /><span style="font-family: 'courier new', courier, monospace;">used rule
file: /tmp/rules</span></p>
<p>Les 5 lignes sont bien capturées, ma règle fonctionne.</p> <p>A++, Sébastien</p>
<p><br /></p>
<div id="v1_rc_sig">-- <br />
<div class="v1pre">Sébastien Dinot<br />Ne goutez pas au logiciel libre, vous ne pourriez plus vous en passer !<br /><a href="
https://www.palabritudes.net/" target="_blank" rel="noopener noreferrer">
https://www.palabritudes.net/</a></div>
</div>
</div>
</body></html>
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)