On Wed, May 20, 2009 at 12:43:43PM -0300, jimmy wrote: > On Wed, May 20, 2009 at 09:39:58AM -0300, Luciano Estevam Rangel wrote: > > Pessoal como prometido estou enviando a entrada para meu script e a saída > > dele > > > > Só existe um problema também que eu não consegui resolver, por eu ter > > precisado retirar o "=" com o sed para poder colocar as variáveis em uma > > array e testar se o campo e from ou to para pegar o próximo campo, por não > > saber em que posição se encontra. Os arquivos que tiverem = no nome vão > > ficar em branco...No exemplo abaixo o arquivo > > "=?iso-8859-1?Q?Sociedade_de_informa=E7=E3o.doc" ficou no report como " > > ?iso-8859-1?Q?Sociedade_de_informa E7 E3o.doc? " > > > > Segue junto o script novamente para quem quiser dar uma melhorada ou me dar > > uma luiz para resolver este problema Obrigado a todos. > > > > > > > > *************************************************************************************************************************************** > > > > > > > > ENTRADA: > > > > May 18 13:13:20 teste-mail postfix/cleanup[17948]: 415011D78237: reject: > > header Content-Type: > > application/msword;??name="=?iso-8859-1?Q?Sociedade_de_informa=E7=E3o.doc?=" > > from Zeca.zeca.local[192.168.0.22]; from=<gu...@etste.com.br> > > to=<olive...@zeze.com.br> proto=ESMTP helo=<zeca>: 5.7.1 TESTE-MAIL - SEU > > ANEXO rma FOI RECUSADO PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU > > EM CASO DE DUVIDAS ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL > > marc...@teste.com.br DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS. > > > > May 19 17:10:14 teste-mail postfix/cleanup[13589]: 56FC11D782CB: reject: > > header Content-Disposition: attachment; filename="porta caneta de bambi Luc > > Brad.wmv" from web63407.mail.re1.yahoo.com[69.147.97.47]; > > from=<j...@yahoo.com.br> to=<te...@teste.com.br> proto=SMTP > > helo=<web63407.mail.re1.yahoo.com>: 5.7.1 TESTE-MAIL - SEU ANEXO wmv FOI > > RECUSADO PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU EM CASO DE > > DUVIDAS ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL > > marc...@teste.com.br DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS > > > > May 19 17:49:48 teste-mail postfix/cleanup[14033]: 553501D782CD: reject: > > header Content-Type: application/vnd.ms-powerpoint;? name="COLONIA DE > > FERIAS- SINTERC-PANORAMA.pps" from zeus.neobiz.com.br[200.174.139.27]; > > from=<faf...@sintercbauru.com.br> to=<s...@teste.com.br> proto=ESMTP > > helo=<zeus.neobiz.com.br>: 5.7.1 TESTE-MAIL - SEU ANEXO pps FOI RECUSADO > > PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU EM CASO DE DUVIDAS > > ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL marc...@teste.com.br > > DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS. > > > > > > > > **************************************************************************************************************************************** > > > > SAIDA: > > > > May 18 13:13 FROM: <gu...@etste.com.br> TO: <olive...@zeze.com.br> > > FILENAME: " ?iso-8859-1?Q?Sociedade_de_informa E7 E3o.doc? " > > > > May 19 17:10 FROM: <j...@yahoo.com.br> TO: <te...@teste.com.br> FILENAME: > > "porta caneta de bambi Luc Brad.wmv" > > > > May 19 17:49 FROM: <faf...@sintercbauru.com.br> TO: <s...@teste.com.br> > > FILENAME: "COLONIA DE FERIAS- SINTERC-PANORAMA.pps" > > > > > > > > ***************************************************************************************************************************************************************************************************************************************************** > > > > SCRIPT: > > > > #!/bin/sh > > cat /var/log/maillog|grep ANEXO |sed 's/:/ /g'|sed 's/=/ /g' |sed 's/??/ > > /g' |while read line > > do > > nomes=(`echo $line`) > > ########################################################## > > count_from=0 > > while [ $count_from != ${#nom...@]} ] > > do > > if [ ${nomes[$count_from]} == from ] > > then > > let "count_from = count_from + 1" > > from=`echo ${nomes[$count_from]}` > > fi > > let "count_from = count_from + 1" > > done > > ########################################################### > > count_to=0 > > while [ $count_to != ${#nom...@]} ] > > do > > if [ ${nomes[$count_to]} == to ] > > then > > let "count_to = count_to + 1" > > to=`echo ${nomes[$count_to]}` > > fi > > let "count_to = count_to + 1" > > done > > ########################################################### > > count_f=0 > > while [ $count_f != ${#nom...@]} ] > > do > > if [ ${nomes[count_f]} == name ] > > then > > file=`echo $line |grep -o "name \".*\"" |sed 's/name//'` > > else > > if [ ${nomes[count_f]} == filename ] > > then > > file=`echo $line |grep -o "filename \".*\"" |sed 's/filename//'` > > fi > > fi > > let "count_f = count_f + 1" > > done > > ########################################################### > > > > data=`echo $line |awk '{print $1, $2, $3":"$4}'` > > echo $data FROM: $from TO: $to FILENAME: $file > report > > done > > > > > > > > Luciano Rangel > > > > ------------------------------------ > > usando apenas sed a partir do seus exemplos fica um pouco indigesto: > > sed > 's/^\(.*:[0-9]\{1,2\}\)\s\+.*\(name\|filename\)="\([^"]\+\)".*from=<\([^>]\+\)>.*to=<\([^>]\+\)>.*/\1 > FROM: \4 TO: \5 FILENAME "\3"/' arquivo > > isso tudo numa linha só, mas resolve o seu problema. > ------------------------------
encontrei uma saída em awk, mas também não ficou muito legível: awk '{out=($1" "$2" "$3); last=""; for ( i = 4; i <= NF; i++ ) last=(last" "$i); split(last, a, /(name|filename)="|(from|to)=<|" from|> /); print out, "FROM: " a[4],"TO: " a[6], "FILENAME: \""a[2]"\"" }' arquivo -- "Não manejo bem as palavras Mas manipulo bem as strings." ------------------------------