![如何将彩色文件转换为 bash 中可读的邮件?](https://linux22.com/image/108251/%E5%A6%82%E4%BD%95%E5%B0%86%E5%BD%A9%E8%89%B2%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20bash%20%E4%B8%AD%E5%8F%AF%E8%AF%BB%E7%9A%84%E9%82%AE%E4%BB%B6%EF%BC%9F.png)
我有一个由脚本创建的文件,当我使用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 命令行将文件作为电子邮件附件发送?