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-blcheck
fecha" [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 blcheck
script 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á blcheck
que 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