Como converter um arquivo colorido para mail legível no bash?

2

Eu tenho um arquivo que foi criado por um script que será colorido quando eu abro usando cat . Mas quando tentei enviar esse arquivo como anexo, ele não está sendo exibido corretamente. Como abaixo está mostrando.

^[[33m================================================================================^[[m
                            ^[[34m172.29.0.110^[[m
^[[33m================================================================================^[[m
Filesystem              Size    Used    Avail   Use%    Mounted on
/dev/mapper/centos  109G   13G   91G  13% /
/dev/mapper/mpatha       1.6T  1.3T  277G  83% /var/lib/SQL
^[[33m================================================================================^[[m
                            ^[[34m172.29.8.110^[[m
^[[33m================================================================================^[[m
Filesystem              Size    Used    Avail   Use%    Mounted on
/dev/mapper/centos  117G  9.1G  102G   9% /
/dev/mapper/mpatha       1.6T  1.4T  109G  93% /var/lib/SQL
^[[33m================================================================================^[[m
                            ^[[34m172.29.16.110^[[m
^[[33m================================================================================^[[m
Filesystem              Size    Used    Avail   Use%    Mounted on
/dev/mapper/centos      117G   18G   94G  17% /
/dev/mapper/VG01-LV 1.5T  812G  590G  58% /var/lib/SQL
^[[33m================================================================================^[[m
                            ^[[34m172.29.26.110^[[m
^[[33m================================================================================^[[m
Filesystem              Size    Used    Avail   Use%    Mounted on
/dev/mapper/LogVol02  117G   22G   90G  20% /
/dev/mapper/mpathm    1.6T  1.1T  435G  71% /var/lib/SQL

O script (parte do script) que cria o arquivo é:

for IP in $(cat file.txt); do
    (echo -e  "\e[33m$LINE\e[m"
    echo -e "                            \e[34m$IP\e[m                                 "
    echo -e "\e[33m$LINE\e[m"
    echo -e "Filesystem\t\tSize\tUsed\tAvail\tUse%\tMounted\ton"
    ssh $SSH_ARG -q user@${IP} "df -Ph | egrep -iv 'filesystem|boot|tmpfs'") >> /disk_${DATE}_log
    echo -e "\e[33m$LINE\e[m"
    echo "Successful for $IP"
done

cat disk_${DATE}_log | mail -s "Disk space" [email protected]

Eu posso remover os echo da criação de cores, mas eu quero saber se há alguma maneira de enviar este arquivo corretamente pelo correio ou posso fazer algo no comando mail para resolver isso?

    
por prado 25.03.2017 / 08:54

1 resposta

1

Você pode fazer o que for solicitado por

  • convertendo o arquivo com ANSI color escapes para HTML, e

  • enviando o arquivo HTML resultante como um anexo.

O programa da linha de comando mail (ou mailx ) pode não ser muito útil para isso, mas há versões diferentes (veja por exemplo Mailx envia uma mensagem html ). Mas sem saber que implementação específica de "mail" você está usando, outras ferramentas (mais previsíveis) funcionam bem.

Muitos clientes de email (como mutt ) podem ser configurados para exibir um anexo de HTML usando um visualizador adequado. Veja, por exemplo, Lendo o email em HTML com o Mutt .

Para a conversão, existem alguns scripts / programas, por exemplo, mais de um chamado "ansi2html" . Eu comentei sobre um em Converter log de tela em html , que pode funcionar para você (veja link para o script ).

Para enviar o anexo, lembre-se de que não é possível simplificar pipe os dados para o cliente de e-mail e que os parâmetros da linha de comando são diferentes. Algumas discussões com foco em mutt são dadas em Como faço para enviar um arquivo como um anexo de e-mail usando a linha de comando do Linux?

    
por 23.05.2017 / 01:08