|
|
cat $D_LOGS/$v_fich | grep "status=bounced" > bounces.tmp
nom_serveur, email, domaine, cause_bounce, date_badmail
Aug 20 08:57:00 serveurname postfix/smtp[1965]: 732DBD4C867: to=<toto.toto@wanadoo.fr>, relay=smtp.wanadoo.fr[193.252.22.78]:25, delay=0.1, delays=0.04/0/0.03/0.03, dsn=5.0.0, status=bounced (host smtp.wanadoo.fr[193.252.22.78] said: 550 <toto.toto@wanadoo.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command))
sed '/@/!d;s/^\(.*\)'$(hostname)'.*<\(.*@\(.*\)\)>.*bounced\(.*\)$/'$(hostname)'|\2|\3|\4|\1/' bounces.tmp >>$(hostname).csv
while IFS=$' ' read mois jour heure serveur process id destinataire relay delay delays dsn status infos do echo -e " mois : $mois \n\ jour : $jour \n\ heure : $heure \n\ serveur : $serveur \n\ process : $process \n\ id : $id \n\ destinataire : $destinataire \n\ relay : $relay \n\ delay : $delay \n\ delays : $delays \n\ dsn : $dsn \n\ status : $status \n\ infos : $infos \n"; done < bounces.tmp
extract()
{
local str deb fin temp
str="${1:-''}"
deb="${2:-'<'}"
fin="${3:-'>'}"
$temp = echo ${str#*$deb}
$temp2 = echo ${temp%*$fin}
return $temp2
}
Configuration: Windows XP Internet Explorer 7.0
Salut,
Une idée peut être... $ cat fich
Aug 20 08:57:00 serveurname postfix/smtp[1965]: 732DBD4C867: to=<toto.toto@wanadoo.fr>, relay=smtp.wanadoo.fr[193.252.22.78]:25, delay=0.1, delays=0.04/0/0.03/0.03, dsn=5.0.0, status=bounced (host smtp.wanadoo.fr[193.252.22.78] said: 550 <toto.toto@wanadoo.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command))
$ awk '{ print $4","$7$12","$1,$2,$3 }' fich | sed 's/to=<//;s/>//'
serveurname,toto.toto@wanadoo.fr,status=bounced,Aug 20 08:57:00:-))
$ man woman Il n'y a pas de page de manuel pour woman. |
Hello,
Incroyable, quand je pense que je rame depuis perpette la dessus ... Si je pouvais abuser ... comment avoir plutot : serveur_name,email,domaine,cause,date_heure serveur_name = ça c'est déjà ok email = ça c'est déjà ok domaine = extraction du domaine du mail ... (à partir de @) cause = tout ce qui suit status=bounced date_heure = au format DD/MM/YYYY HH:MM:SS ou YYYYMMDD HHMMSS Moi je sature sur toutes ces commandes à 8000 attributs et autre expression régulières qui se chevauchent .... Au secours .... Stéphane |
Euuu encore moi, suis toujours dessus ...
J'essais de mettre en place un tableau associatif pour changer le mois par son numéro exemple Aug devient 08 J'ai trouvé cette doc (ici : http://www.c-sait.net/cours/bash.php ) Pour créer un tableau en n'utilisant pas les indices par défaut, on utilisera la syntaxe suivante : > tableau2=([clé0]=valeur0 [clé1]=valeur1 [clé2]=valeur2) Où les clés peuvent être n'importe quelles chaînes de caractères. A un tableau créé avec les index numériques par défaut, on peut très bien ajouter un élément dont la clé est une chaîne de caractères. Donc je fais : Mois=(["Jan"]="01" ["Fev"]="02" ["Aug"]="08" ["Sep"]="09" ["Oct"]="10"); ou Mois=([Jan]="01" [Fev]="02" [Aug]="08" [Sep]="09" [Oct]="10"); et j'obtiens TOUJOURS : echo "numéro du mois ${Mois[Aug]}" >numéro de mois 10 echo "numéro du mois ${Mois['Aug']}" >numéro de mois 10 ...GRRR.... |
Tiens essayes ça : [tmpfs]$ cat fich
Aug 20 08:57:00 serveurname postfix/smtp[1965]: 732DBD4C867: to=<toto.toto@wanadoo.fr>, relay=smtp.wanadoo.fr[193.252.22.78]:25, delay=0.1, delays=0.04/0/0.03/0.03, dsn=5.0.0, status=bounced (host smtp.wanadoo.fr[193.252.22.78] said: 550 <toto.toto@wanadoo.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command))
Aug 22 09:57:00 monserveur postfix/smtp[1965]: 732DBD4C867: to=<titi.titi@free.fr>, relay=smtp.free.fr[193.252.22.78]:25, delay=0.1, delays=0.04/0/0.03/0.03, dsn=5.0.0, status=bounced (host smtp.free.fr[193.252.22.78] said: 550 <titi.titi@free.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command))
[tmpfs]$ cat foo.sh
#! /bin/bash
while read line
do
cause=$(awk -F"(" '{ print "("$2"("$3 }' <<<$line)
DATE=$(awk '{ print $1,$2,$3 }' <<<$line)
NEW_DATE=$(date --date="${DATE}" '+%d/%m/%Y %H:%M:%S')
NEW_line=$(awk '{ print $4","$7$12"," }' <<<$line | sed 's/to=<//;s/>//')
sed "s|\(.*@\)\([^,]*\)\(.*\)|\1\2,\2,${cause},${NEW_DATE}|" <<<$NEW_line
done < fich
[tmpfs]$ ./foo.sh
serveurname,toto.toto@wanadoo.fr,wanadoo.fr,(host smtp.wanadoo.fr[193.252.22.78] said: 550 <toto.toto@wanadoo.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command)),20/08/2008 08:57:00
monserveur,titi.titi@free.fr,free.fr,(host smtp.free.fr[193.252.22.78] said: 550 <titi.titi@free.fr>: Recipient address rejected: User unknown (in reply to RCPT TO command)),22/08/2008 09:57:00
[tmpfs]$ ;-))
$ man woman Il n'y a pas de page de manuel pour woman. |
tu es incroyable ... je bataille depuis des jours ....
MERCI !! Stéphane |
Résultats pour linux bash shell extraction de chaine
Résultats pour linux bash shell extraction de chaine
Résultats pour linux bash shell extraction de chaine
Résultats pour linux bash shell extraction de chaine