[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Arquivo com espaço e posição diferente
From: |
jimmy |
Subject: |
Re: [shell-script] Arquivo com espaço e posição diferente |
Date: |
Wed, 20 May 2009 12:43:43 -0300 |
User-agent: |
Mutt/1.4.2.3i |
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=<address@hidden> to=<address@hidden>
> 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 address@hidden 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=<address@hidden> to=<address@hidden> 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 address@hidden
> 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=<address@hidden> to=<address@hidden> 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 address@hidden DEPARTAMENTO DE
> TECNOLOGIA TESTE SERVICOS.
>
>
>
> ****************************************************************************************************************************************
>
> SAIDA:
>
> May 18 13:13 FROM: <address@hidden> TO: <address@hidden> FILENAME: "
> ?iso-8859-1?Q?Sociedade_de_informa E7 E3o.doc? "
>
> May 19 17:10 FROM: <address@hidden> TO: <address@hidden> FILENAME: "porta
> caneta de bambi Luc Brad.wmv"
>
> May 19 17:49 FROM: <address@hidden> TO: <address@hidden> 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 != ${#nomes[@]} ]
> 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 != ${#nomes[@]} ]
> 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 != ${#nomes[@]} ]
> 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.
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------