此脚本通过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); } ?>
挺好
支持