我是一个单独的Web开发人员,拥有自己的Centos VPS,为我的客户托管一些小型网站.今天我发现我的httpd服务已停止(没有明显的原因 – 但这是另一个线程).我重新启动它但现在我需要找到一种方法,如果它再次发生我可以通过电子邮件和/或短信通知 – 我不喜欢它,当我的客户打电话告诉我他们的网站不起作用!
我知道可能存在许多不同的可能性,包括服务器监控软件.我认为我真正需要的是一个脚本,我可以从我的开发主机(在我的办公室中永久运行)作为cron作业运行,尝试从我的生产服务器加载页面,如果它没有在30内加载然后,它会向我发送电子邮件或短信.我对shell脚本非常垃圾,因此这个问题.
任何建议将不胜感激.
嗯…最简单的脚本,我写道:
/usr/bin/wget "www.example.com" --timeout 30 -O - 2>/dev/null | grep "Normal operation string" || echo "The site is down" | /usr/bin/mail -v -s "Site is down" your@e-mail.address
将它添加到cron中:
* * * * * /usr/bin/wget "www.example.com" --timeout 30 -O - 2>/dev/null | grep "Normal operation string" || echo "The site is down" | /usr/bin/mail -v -s "Site is down" your@e-mail.address
但是如果它存在的话,告诉你问题是什么太简单了.
UPD:现在这个单行检查页面上的特定字符串(“正常操作字符串”),这应该仅在正常操作时出现.
/usr/bin/wget "www.example.com" --timeout 30 -O - 2>/dev/null | grep "Normal operation string" || /usr/bin/wget "www.example.com" --timeout 30 -O - 2>/dev/null | /usr/bin/mail -v -s "Site is down" your@e-mail.address
它是否为在第一次测试失败时重新请求页面.这次请求可能成功,您将看不到错误.当然,可以存储输出并将其作为附件发送,但它会使脚本更复杂.