此脚本通过curl目标网站,然后得到状态码做出判断的监控。
正常访问的网站返回状态码是200,也就是返回200时是正常访问的,
如出现0 403 404 444 等等错误状态码,则是网站访问异常,进而通知机器人反馈到目标QQ进行通知
而这个过程需要搭配机器人
QQ机器人架设
这里用到了go-cqhttp
机器人安装教程 https://www.boxmoe.com/522.html
脚本架设
需要支持php的环境,创建一个php文档复制下方代码,然后修改监控网站和QQ号码,
并且把脚本访问链接加入到计划任务执行,至于多久监控一次这个自定义
最后的 http://127.0.0.1:5700 是机器人api地址和端口,替换成自己的
<?php
//监控网站
$check_web = array(
'https://www.boxmoe.com/',
'https://boxmoe.com/',
);
//通知QQ
$qq='504888738';
//日志文本输出路径
$oklogPath = __DIR__ . "/web-ok.log";
$nologPath = __DIR__ . "/web-no.log";
//错误输出日志到文本
function errLog($msg)
{
global $nologPath;
$message = "[错误]" . date("[y-m-d H:i:s]") . " $msg\n";
error_log($message, 3, $nologPath);
}
//正常状态输出日志到文本
function infoLog($msg)
{
global $oklogPath;
$message = "[正常]" . date("[y-m-d H:i:s]") . " $msg\n";
error_log($message, 3, $oklogPath);
}
//执行curl检测逻辑,最大执行时间是 60秒
ini_set('max_execution_time',60);
function httpcode($url){
$ch = curl_init();
$timeout = 3;
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_URL,$url);
curl_exec($ch);
return $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
}
for($i=0;$i<count($check_web);$i++){
$website = $check_web[$i];
$webcode = httpcode($check_web[$i]);
if($webcode != 200){
if($webcode == 0){$errwebcode =$webcode.' 宕机!宕机!宕机!'; }else{$errwebcode = $webcode.' 不能正常打开';}
errLog('[检测异常] [监控网站]'.$website.' -> [网站状态]'.$errwebcode.'');
echo '[检测异常] [监控网站]'.$website.' -> [网站状态]'.$errwebcode.'<br>';
$eMessage ="[检测异常] \n \n[监控网站]\n".$website."\n[网站状态]".$errwebcode."";
boxmoe_msg_qq($qq, $eMessage);
}else{
infoLog('[检测正常] [监控网站]'.$website.' -> [网站状态]'.$webcode.'');
echo '[检测正常] [监控网站]'.$website.' -> [网站状态]'.$webcode.'<br>';
}
}
//开始QQ机器人推送
function boxmoe_msg_qq($qq, $msg)
{
$message = "$msg";
$time = "[检测时间:". date("y-m-d H:i:s")."]";
$desp = $message . "\n".$time;
// 封装,推送到 QQ
$postdata = http_build_query(
array(
'message' => $desp
)
);
// 执行POST请求
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
return $result = file_get_contents('https://127.0.0.1:5700/send_private_msg?user_id='.$qq.'', false, $context);
}
?>

评论(2)