我目前正在尝试制作一个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
答案 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")