Filtres

Le
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é
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #26325579
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 helo
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
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 /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


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
Publicité
Poster une réponse
Anonyme