Problema de e-mail com saída do script bash blcheck

Problema de e-mail com saída do script bash blcheck

Bash script blcheck de problemas de formato do github com saída de e-mail

A saída do console é exibida correta, mas quando enviada para e-mail via mailx continuará como anexo, não para o corpo.
33%% dnsbl.inps.de ✓
50%% xbl.spamhaus.org ✓

Exemplo de saída para arquivo ou e-mail:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net ✓ESC(BESC[m

Aconselhar, por favor, como posso corrigir o formato no arquivo e no e-mail?

CMD que não está enviando para o corpo do eamil:

sh blcheck -v xx.xx.xx.xx | mail -s "server-blcheckdata" [email protected]

roteiro:https://github.com/IntellexApps/blcheck


Após assistência de @ john1024 e @cas e postagem anteriorRemovendo caracteres de controleabaixo do cmd resolveu o problema.

CMD: ./blcheck-l -v xx.xx.xx.xx | perl -pe 's/\e([^[]]|[.*?[a-zA-Z]|].*?\a)//g' | col -b | mail -s "blcheck-l -v `date`" email@address

darko-poljak enviou uma solicitação pull no github com uma nova opção para tornar a saída amigável para uso não interativo.
https://github.com/IntellexApps/blcheck/pull/2

Responder1

O que você vê são sequências de escape ANSI. No blcheck, eles são usados ​​para alterar as cores do texto que é exibidono terminal. Como você descobriu, eles não funcionam em mensagens de e-mail.

Para removê-los permanentemente, edite o blcheckscript com seu editor favorito. Encontre as linhas:

RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
CLEAR=$(tput sgr0)

E substitua essas linhas por:

RED=
GREEN=
YELLOW=
CLEAR=

Isso impedirá blchecka adição de sequências ANSI em primeiro lugar.

Abordagem mais flexível

É possível fazer o código funcionar tanto para o terminal (ANSI) quanto para um pipeline (sem ANSI). O código a seguir testa se stdout é um terminal. Se for, ele define as variáveis ​​de cor para as sequências ANSI necessárias. Se não for um terminal, nenhuma sequência ANSI será gerada.

RED=
GREEN=
YELLOW=
CLEAR=
if [ -t 1 ]
then
    RED=$(tput setaf 1)
    GREEN=$(tput setaf 2)
    YELLOW=$(tput setaf 3)
    CLEAR=$(tput sgr0)
fi

informação relacionada