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

Filtres

1 réponse
Avatar
Chloe Sival
Bonjour,

N’étant pas assez forte en perl, je cherche a extraire de cette ligne de
logs:

Nov 27 16:08:50 mx-srv1 postfix/postscreen[13223]: NOQUEUE: reject: RCPT
from [172.20.1.21]:49114: 550 5.7.1 Service unavailable; client
[172.20.1.21] blocked using zen.spamhaus.org;
from=<bounces@fdomaine1.com>, to=<toto@domaine2.com>, proto=ESMTP,
helo=<srv-249-21.out-mid23.com>



La date ainsi que :
reject
172.20.1.21
zen.spamhaus.org
bounces@fdomaine1.com
toto@domaine2.com
pour les mettre dans des variables.





et dans celle ci:

Nov 27 12:08:36 mx-srv1 postfix/smtpd[5691]: NOQUEUE: reject: RCPT from
mail-kijkou.dom.com[172.25.1.17]: 450 4.2.0 <dupont@domaine2.fr>:
Recipient address rejected: Greylisting; from=<Vanessa@domaine1.fr>
to=<dupont@domaine2.fr> proto=ESMTP helo=<mail--kijkou.dom.com>

La date ainsi que :
reject
172.25.1.17
Greylisting
Vanessa@domaine1.fr
dupont@domaine2.fr
pour les mettre dans des variables.


j'essaye avec un classic @data = split mais as très efficace

quelqu'un a une idée pour m’aider ?

merci
Chloé

1 réponse

Avatar
Olivier Miakinen
Bonjour,

Le 27/11/2014 17:12, Chloe Sival a écrit :

N’étant pas assez forte en perl, je cherche a extraire de cette ligne de
logs:

Nov 27 16:08:50 mx-srv1 postfix/postscreen[13223]: NOQUEUE: reject: RCPT
from [172.20.1.21]:49114: 550 5.7.1 Service unavailable; client
[172.20.1.21] blocked using zen.spamhaus.org;
from=, to=, proto=ESMTP,
helo=<srv-249-21.out-mid23.com>

La date ainsi que :
reject
172.20.1.21
zen.spamhaus.org


pour les mettre dans des variables.

et dans celle ci:

Nov 27 12:08:36 mx-srv1 postfix/smtpd[5691]: NOQUEUE: reject: RCPT from
mail-kijkou.dom.com[172.25.1.17]: 450 4.2.0 :
Recipient address rejected: Greylisting; from=
to= proto=ESMTP helo=<mail--kijkou.dom.com>

La date ainsi que :
reject
172.25.1.17
Greylisting


pour les mettre dans des variables.



Il faudrait savoir ce qui est fixe et ce qui est variable dans ce que
tu recherches, afin de pouvoir utiliser une regexp.

Je vais supposer que les choses suivantes sont fixes.

1) la date est au début, et est constituée d'un mot de trois lettres
avec la première en majuscule, suivi d'un nombre d'un ou deux
chiffres , puis d'une heure avec trois séries de deux chiffres
séparées par des deux-points.
/^([A-Z][a-z][a-z] [0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2})/

2) la chaîne « NOQUEUE: » existe, suivie d'une espace, puis de lettres
minuscules et d'un autre deux-points.
/NOQUEUE: ([a-z]+):/

3) après « RCPT from » il y a éventuellement un nom de domaine, puis
des crochets avec une adresse IPv4 à l'intérieur.
/RCPT from [A-Za-z0-9.-]*[([0-9.]+)]/

4) il y a soit « blocked using » soit « Recipient address rejected: »
suivi de ta quatrième variable puis d'un point-virgule.
/(?:blocked using|Recipient address rejected:) ([^;]+);/

5) Tu as from=<...> puis to=<...>, sans caractère > à l'intérieur.
/from=<([^>]+)>/
/to=<([^>]+)>/

Ce qui donne donc (je le mets en « citation » afin que la ligne ne soit
pas coupée) :

/^([A-Z][a-z][a-z] [0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2}).*NOQUEUE: ([a-z]+):.*RCPT from [A-Za-z0-9.-]*[([0-9.]+)].*(?:blocked using|Recipient address rejected:) ([^;]+);.*from=<([^>]+)>.*to=<([^>]+)>/



C'est tout ce que je peux faire pour toi, car je ne connais pas encore
perl, seulement les regexps. Par ailleurs, certains te conseilleront
peut-être d'échapper les caractères « : », « ; », « < » et « > » dans
ces regexps, j'ai cru comprendre que Perl pouvait être chatouilleux
sur ce point.

Cordialement,
--
Olivier Miakinen