Problema de correo electrónico con la salida del script bash blcheck

Problema de correo electrónico con la salida del script bash blcheck

Bash script blcheck de problemas de formato github con salida de correo electrónico

La salida de la consola se muestra correcta, pero cuando se envía por correo electrónico a través de mailx, aparecerá como archivo adjunto, no como cuerpo.
33%% dnsbl.inps.de ✓
50%% xbl.spamhaus.org ✓

Ejemplo de salida a archivo o correo electrónico:
16%% dnsbl-3.uceprotect.net ^MESC(BESC[m 16%% dnsbl-.uceprotect.net ✓ESC(BESC[m

¿Por favor indique cómo puedo corregir el formato en el archivo y el correo electrónico?

CMD que no envía al cuerpo de eamil:

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

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


Después de la ayuda de @john1024 y @cas y publicación anteriorEliminación de caracteres de controldebajo de cmd se resolvió el 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 ha enviado una solicitud de extracción en github con una nueva opción para hacer que la salida sea amigable para uso no interactivo.
https://github.com/IntellexApps/blcheck/pull/2

Respuesta1

Lo que ves son secuencias de escape ANSI. En blcheck, se utilizan para cambiar los colores del texto que se muestra.en la terminal. Como habrás descubierto, no funcionan en mensajes de correo electrónico.

Para eliminarlos permanentemente, edite el blcheckscript con su editor favorito. Encuentra las líneas:

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

Y reemplace esas líneas con:

RED=
GREEN=
YELLOW=
CLEAR=

Esto evitará blcheckque se agreguen las secuencias ANSI en primer lugar.

Enfoque más flexible

Es posible hacer que el código funcione para la terminal (ANSI) o para una tubería (sin ANSI). El siguiente código prueba para ver si stdout es una terminal. Si es así, establece las variables de color en las secuencias ANSI requeridas. Si no es un terminal, no se generan secuencias ANSI.

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

información relacionada