php实现网站监控--web安全
linux下网站状态监控实现(免费手机短信和MSN消息提醒) 参考了张宴的《Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现》并结合飞信的免费短信接口为服务器做了个监控脚本,在监控端服务器(公司内部服务器)部署完之后,每隔5分钟检测一次网站是否能正常访问,如果有异常则通过飞信免费发送警报短信到指定手机或者MSN上。首先需要有一个已开通飞信的手机号,并把接收警报短信的手...
参考了张宴的《Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现》并结合飞信的免费短信接口为服务器做了个监控脚本,在监控端服务器(公司内部服务器)部署完之后,每隔5分钟检测一次网站是否能正常访问,如果有异常则通过飞信免费发送警报短信到指定手机或者MSN上。
首先需要有一个已开通飞信的手机号,并把接收警报短信的手机号加为飞信好友(也可以自己给自己发),然后申请一个专门用来发送警报消息的msn帐号,并加为自己的msn好友。
/var/cron/monitor/http.sh (博客的代码显示插件有点小问题,复制代码请单击编辑右上角的view source按钮,然后复制)
#!/bin/sh LANG=C #被监控服务器、端口列表 server_all_list=( junnan.org ) telnum=已开通飞信的手机号 passwd=飞信密码 date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S") #采用HTTP POST方式发送检测信息给接口程序interface.php,接口程序负责分析信息,决定是否发送报警MSN消息、手机短信、电子邮件。 send_msg_to_interface() { if [ $2 = "0" ] || [ $2 = "2" ]; then #开始发送警报短信,13500000000是接收方手机号 curl -m 600 -d username=${telnum} -d password=${passwd} -d sendto=13500000000 -d message=$1 http://sms.api.bz/fetion.php #发送msn警报消息(如果不需要msn警报可以注释这行) curl -m 600 -d menu=http -d date=$date -d ip=$server_ip -d port=$server_port -d status=$status http://127.0.0.1/monitor/interface.php fi; } server_all_len=${#server_all_list[*]} i=0 while [ $i -lt $server_all_len ] do server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}') server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}') server_message=" " if curl -m 10 -G http://${server_all_list[$i]}/ > /dev/null 2>&1 then #status: 0,http down 1,http ok 2,http down but ping ok status=1 echo "服务器${server_ip},端口${server_port}能够正常访问!"; server_message="服务器${server_ip},端口${server_port}能够正常访问!"; else if curl -m 30 -G http://${server_all_list[$i]}/ > /dev/null 2>&1 then status=1 echo "服务器${server_ip},端口${server_port}能够正常访问!" server_message="服务器${server_ip},端口${server_port}能够正常访问!"; else if ping -c 1 $server_ip > /dev/null 2>&1 then status=2 echo "服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!"; server_message="服务器${server_ip},端口${server_port}无法访问,但是能够Ping通!"; else status=0 echo "服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!"; server_message="服务器${server_ip},端口${server_port}无法访问,并且无法Ping通!"; fi fi fi send_msg_to_interface "${server_message}" "${status}"; let i++ done |
interface.php (需要设置监控端服务器的让其可访问到,如:http://127.0.0.1/monitor/interface.php,与上面脚本对应)
这里需要一个PHP类sendMsg,用来通过PHP发送消息到MSN,下载后把目录解压到interface.php目录即可。
|
然后执行crontab -e,加入如下语句:
*/5 * * * * sh /var/cron/monitor/http.sh
好了,脚本将会每5分钟执行一次,如果想测试一下脚本是否有效,可以把http.sh里的send_msg_to_interface函数里的if语句注释掉(别忘记fi也要注释)。
更多推荐
所有评论(0)