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-blcheck
data" [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 blcheck
script 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á blcheck
a 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