gpt4 book ai didi

linux - 如何在新行上获取 diff 命令的输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:11 27 4
gpt4 key购买 nike

我是脚本世界的新手,目前正在使用脚本对我管理的 san 设备执行运行状况检查。

该脚本很简单,它将命令的输出从远程设备重定向到当前文件到我的本地主机。然后,我使用 diff 命令来比较当前文件和引用文件的输出,并获取有关差异的电子邮件警报。 diff 的输出被传递给变量“variable”,然后使用 if 循环 if 得到结果

到目前为止,我已经使自动登录和电子邮件部分正常工作(仅当与 DIFF 命令存在差异时我才会收到电子邮件)。然而,我现在收到的电子邮件将其测试连接成一个长字符串,这不利于查看,并且对于将要收到它的人来说不容易理解。

我当前的脚本粘贴在下面

ssh test@ip_of_device switchshow > switchshow_results
variable=diff switchshow_reference switchshow_results
if [[ $variable -eq 0 ]]
then
echo $"nothing"
else
echo $variable | mail -s switch_HARDWARE_CHECK recipeint_email_address
fi

上述脚本的输出是空白的,当 diff 命令没有发现任何差异时,我没有收到任何电子邮件。

但是,当 diff 命令发现差异时,我会收到一封电子邮件,如下粘贴

16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 26c26 < 10 10 010a00 id N4 Online FC F-Port 1     N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public 29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a

理想情况下,这应该在电子邮件中看起来像这样..

16c16 < 0 0 010000 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 0 0 010000 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public

26c26 < 10 10 010a00 id N4 Online FC F-Port 1 N Port + 1 NPIV public --- > 10 10 010a00 id N4 No_Light FC F-Port 1 N Port + 1 NPIV public

29c29 < 13 13 010d00 id N4 Online FC F-Port 50:06:01:67:3b:20:23:0a --- > 13 13 010d00 id N4 No_Light FC F-Port 50:06:01:67:3b:20:23:0a

输出应在电子邮件中一次显示一行。有什么建议么?当只有一行有差异时,这种方法效果很好,但是多行差异给我带来了上述问题。我的要求是 diff 输出必须通过电子邮件发送给我。我检查了 diff 命令中的各种选项,但是我无法找出任何对我有帮助的选项。

任何帮助将不胜感激。

最佳答案

您忘记在 $variable 两边加引号

使用这个:

echo "$variable" | mail -s switch_HARDWARE_CHECK recipeint_email_address

原因已解释here

关于linux - 如何在新行上获取 diff 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com