bash - Shell 脚本在电子邮件中出现乱码
问题描述
当 RAID 状态不是“最佳”时,我正在使用下面的脚本向我发送电子邮件。
其中的 echo 命令,例如:
echo $(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /eall /sall show)
生成带有未格式化文本的电子邮件,例如:
Drive Information : ================= ----------------------------------------------------------------------- EID:Slt DID State DG Size Intf Med SED PI SeSz Model Sp ----------------------------------------------------------------------- 16:0 31 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:1 30 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:2 29 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:3 34 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:4 33 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:5 32 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:6 37 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:7 36 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:8 35 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:9 38 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:10 41 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U 16:11 40 Onln 0 5.
而不是:
Drive Information :
=================
-----------------------------------------------------------------------
EID:Slt DID State DG Size Intf Med SED PI SeSz Model Sp
-----------------------------------------------------------------------
16:0 31 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:1 30 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:2 29 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:3 34 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:4 33 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:5 32 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:6 37 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:7 36 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:8 35 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:9 38 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:10 41 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
16:11 40 Onln 0 5.456 TB SAS HDD N N 512B ST6000NM0034 U
-----------------------------------------------------------------------
当然,我没有在这里做一些愚蠢的事情!提前感谢您的建议。
脚本:
#!/bin/bash
CLISTAT=$(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /vall show | grep RAID6 |awk '{ print $3 }')
if [ "$CLISTAT" = "Optl" ]; then
echo "RAID status is optimal. All is good!"
exit 0
else
(
echo "From: admin@example.org"
echo "To: admin@example.org"
echo "Subject: RAID status alert on server.example.org !!"
echo "X-Priority: 1 (Highest)"
echo "X-MSMail-Priority: High"
echo "Importance: High"
echo ""
date
echo
echo "The RAID status on Socs-Stats is not optimal!"
echo " "
echo "Hard Drive details:"
echo " "
echo $(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /eall /sall show)
echo " "
echo " "
echo "Virtual Drive details:"
echo $(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /vall show)
echo "----------------------------------------------------------------"
) | /sbin/sendmail -it
exit 2
fi
解决方案
尝试在命令替换周围加上引号:
echo "$(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /eall /sall show)"
echo " "
echo " "
echo "Virtual Drive details:"
echo "$(/usr/local/RAID\ Web\ Console\ 2/StorCLI/storcli64 /c0 /vall show)"
推荐阅读
- c# - 在 Visual Studio 的新解决方案中使用来自 github 的 Boostrap 模板
- c# - 是否存在 TaskPool 参考实现?
- elasticsearch - 为什么我的 Elasticsearch 查询检索所有索引文档
- c# - 如何在新记录水晶报表中显示上一条记录中某个公式的值
- loadrunner - 在 LOADRunner 中使用公式作为参数
- python - 如何在单个批处理请求中发送多个请求(批处理)
- python - Django PyTests - Visual Studio 代码 - 未发现测试,请检查测试的配置设置
- python - View 没有返回 HttpResponse 对象。它返回无
- java - 如何在 Java Servlet 中跟踪文件下载事件
- python - Python教程中do_global()的作用