编写脚本:访问一网站,每5分钟访问一次,如果访问成功,将访问记录保存到日志,如果访问失败,则发送邮件至指定邮箱
今天由于业务需求,要把检查公司的网站是否能被外网访问到,就在同事的指导下做一个计划任务,首先得了解需求:
每五分钟访问公司网站一次,如果访问成功,将访问记录保存到日志,如果访问失败,就发送邮件到指定邮箱中。
需求拿到了,怎么去实现呢?
怎么去实现这个功能,在下愚钝,没有多想,肯定是crontab这个功能,于是直接就写出一个脚本(水平仅限于今天上午),脚本如下:
MAILTO=1234567@163.com
*/5 * * * * curl http://www.baidu.com
这个肯定不行,最后我询问了一些活跃在群中的大牛,他们一一给出指点,最终结合他们的给出的意见以及自己翻查资料最终解决了,脚本内容如下:
#! /bin/bash
#定义变量
L="web is Good !"
#获取网站状态特征码@1
LL=`curl -I -s http://www.baidu.com | head -1 | cut -d " " -f2`
#做判断
if [ $LL = "200" ]
then
echo "$L" >>/tmp/acc`date +%F%H%M`.log
elif [$LL="301"]
then
echo "$L" >>/tmp/acc`date +%F%H%M`.log
elif [$LL="302"]
then
echo "$L" >>/tmp/acc`date +%F%H%M`.log
else
echo "not find the page." | mail -s "not find the page" "1234567@163.com"
fi
===============================================分割线===================================================================================================
脚本重写:
#! /bin/bash
source /etc/profile
L="web is Good !"
LL=`curl -I -s http://www.baidu.com| head -1 | cut -d " " -f2`
if [ $LL = "200" ] || [$LL = "301"] ||[$LL = "302"]
then
echo "$A" >>/tmp/log/acc.`date +%F%H%M0000`.log
else
echo "not find the page" | mail -s "not find the page" "1234567@qq.com"
fi
@1:网站状态特征码:如果返回的值是200、301 、302都代表访问网站成功
脚本写完了,下面写计划任务就简单多了
crontab -e
*/5 * * * * /usr/jihuarenwu.sh
注意,jihuarenwu.sh要具有执行权限。
由于现在水平低,有发现新的方法会立即修改,如果网友有好的方法请告知。
在此感谢: 广州—greedy、深圳-sam、南京-运维、阿铭、江苏-风筝、帝都 + 豆菜、等待、Budweiser小王子等朋友的指点。