柴少的官方网站 技术在学习中进步,水平在分享中升华

linux发送邮件内容变成了tcmime.xxxx.xxxx.xxxx.bin的附件形式

       因为物理机比较多,为了确保在硬盘在损坏之前能够预警出来,所以每台物理机都部署了一个定时检测脚本来检测磁盘状态,如果出现问题就发送到一个汇总的服务器,由服务器过滤并发送报警信息到运维人员的邮箱。

      发送邮件的命令为:echo "`cat /tmp/diskmail `"|mail -s  "disk check err" 收件人邮箱。

      但是问题是并没有发送附件,但是除了postfix客户端收到的是正常的报警内容外,其他的类似于QQ邮箱,163邮箱收到的都是类似于:tcmime.1146.1146.1196.bin 这种形式的附件格式。将附件下载下来,用windows的文本编辑工具是可以打开的。

       图片.png

      可见是发送的内容有问题,导致了这种情况的出现。

       博文来自:www.51niux.com

      通过linux服务器上面#vim  /tmp/diskmail文件,发现在内容每行的末尾有^M,然后我试着将末尾的^M去掉,再发送发现正常了。

       echo "`cat /tmp/diskmail|tr -d '\r' `"|mail -s  "disk check err"  收件人邮箱

       然后再查看:收件箱的内容不再是附件而是下面的格式:

        TIME: Apr 10 10:08:13

        IP:101.111.253.123

       ERR:

       sd 0:0:5:0: [sdd] Sense Key : Medium Error [current]

       sd 0:0:5:0: [sdd] Add. Sense: Unrecovered read error

       

       当然有时候vim文件发现每行的末尾没有^M,但是发送还是附近的形式。

        #yum install  dos2unix -y

        #dos2unix  /tmp/diskmail

         再次发送次文件的内容,也不再是附件了。

         注:

         dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。很多时候再windows上面编辑的shell脚本上传到linux服务器上面的时候,也需要用此命令转换一下格式,以防止运行报错。


      

作者:忙碌的柴少 分类:解决小问题 浏览:8133 评论:0
留言列表
发表评论
来宾的头像