【发布时间】:2014-11-14 05:19:13
【问题描述】:
我是脚本新手,如果系统上有准备好更新,我会尝试给自己发送一封电子邮件。我想要这样做的方式是,如果 yum check-update 报告任何包,给我发一封电子邮件,如果没有,什么也不做。这是我想出的:
#!/bin/bash
cat /dev/null > /root/scripts/updates.txt
yum check-update > /root/scripts/updates.txt
updatecheck=$(cat /root/scripts/updates.txt | grep updates | grep -v mirrors)
updatestatus=$(echo "$updatecheck" | wc -l)
if [ $updatestatus == 0 ]
then
mail -s "There are no updates for monitor01.aevhosting.com" email@address.com
else
mail -s "There are updates for monitor01.aevhosting.com" email@address.com
fi
它没有做任何事情,它只是挂在那里,要返回命令行,我必须按 control+c 退出脚本。我也在跟踪邮件日志,看看它是否发送了任何东西,但事实并非如此。不知道这里出了什么问题,但非常感谢任何和所有的帮助!!
谢谢
【问题讨论】:
-
第一行似乎没有必要;当您在下一行运行
yum时,将创建该文件。 -
mail命令是否适用于我们的命令行? -
cat ... | grep是一种反模式,grep接受文件就好了,它不需要管道输入。 -
check-update 也为此目的返回一个退出代码。
0是没有可用更新,1表示错误,100如果更新可用。 -
您好,是的,当我在命令行中自行运行该邮件行时,邮件命令有效并发送电子邮件。我已经自己完成了每一行,并且一切都由它自己完成,但是当我将所有内容放在一起时,如您所见,它不会做任何事情并卡住。
标签: bash if-statement scripting