写一个shell脚本给我发电子邮件,如果网站说它已经关闭进行维护

时间:2011-08-24 18:37:09

标签: shell curl

我目前正在尝试制作一个shell脚本,如果该网站说它已经停机维护,它将通过电子邮件发送给我和其他收件人。我可以尝试使用curl和grep来管道变量如果grep看到短语“Down for Maintenance”,但即使网站没有说它仍然输出信息。我想这样做,如果这个短语存在,它将成为可变的真实,否则它是假的,只是退出。顺便说一句,这是一个cronjob。

到目前为止,我已经提出了这个问题。 P.S很抱歉是这样的菜鸟。

    ## Sends an email if the website is down for maintanance
    #RESPONSE = ''
    curl websiteaddress.com | grep "Down for Maintenance" | read RESPONSE
    if $RESPONSE
    then
    echo "Website is Down" | mail -s "Website is down for maintenance" email@address.com
    end else
    exit

2 个答案:

答案 0 :(得分:2)

变化:

curl websiteaddress.com | grep "Down for Maintenance" | read RESPONSE
if $RESPONSE

要:

curl websiteaddress.com | grep -q "Down for Maintenance"
if [ $? -eq 0 ] ; then
    echo "Website is Down" | mail -s "Website is down for maintenance" email@address.com
; fi

grep -q告诉grep以“安静模式”运行,这意味着它不会输出任何内容。相反,如果找到匹配,它将返回零返回码,如果未找到匹配则返回1。 if [ $? -eq 0 ]检查grep的返回码。

答案 1 :(得分:0)

您的RESPONSE已正确初始化,但在另一个过程中 - 因为管道。 在你的调用脚本中它是unkonwn。

如果您需要RESPONSE,您可以执行以下操作:

read RESPONSE <<< $(curl websiteaddress.com | grep -q "Down for Maintenance")