如何将彩色文件转换为 bash 中可读的邮件?

如何将彩色文件转换为 bash 中可读的邮件?

我有一个由脚本创建的文件,当我使用cat.但是当我尝试将该文件作为附件发送时,它没有正确显示。就像下面显示的那样。

^[[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

创建文件的脚本(脚本的一部分)是::

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]

我可以删除那些echo创建颜色的内容,但我想知道有什么方法可以通过邮件正确发送此文件,或者我可以在邮件命令中执行某些操作来解决此问题吗?

答案1

您可以执行以下要求的操作

  • 转换文件ANSI 颜色转义到 HTML,以及

  • 将生成的 HTML 文件作为附件发送。

命令行mail(或者mailx)程序对此可能不是很有用,但有不同的版本(例如参见Mailx发送html消息)。但是,在不知道您正在使用的“邮件”的具体实现方式的情况下,其他(更可预测的)工具也可以很好地工作。

许多邮件客户端(例如mutt)可以配置为使用合适的查看器显示 HTML 附件。例如,请参阅使用 Mutt 阅读 HTML 电子邮件

为了进行转换,有一些脚本/程序,例如,不止一个名为“ansi2html”。我评论了其中一篇将屏幕日志转换为 html,这可能适合您(请参阅链接到脚本)。

对于发送附件,请记住您不能简化管道数据发送到邮件客户端,并且命令行参数有所不同。一些讨论集中mutt如何使用 Linux 命令行将文件作为电子邮件附件发送?

相关内容