全球主机交流论坛

标题: 求监控网页变化 邮件通知的方法 [打印本页]

作者: yilin101    时间: 2017-6-16 08:43
标题: 求监控网页变化 邮件通知的方法
本帖最后由 yilin101 于 2017-6-16 09:52 编辑

弄了个监控 不带邮件通知

想知道怎么监控页面 发现 “不可用” 就邮件通知我

chrome的插件要一直开着电脑 不环保

应该可以通过curl 抓取内容吧  
但是不太会 请大佬们帮忙

方法一:
这个http://443502.xyz/thread-32575-1-1.html

成功了 感谢

方法二:
Eric.c大佬给的方案 正在测试



作者: letxxt    时间: 2017-6-16 08:44
弄个win小鸡开了
作者: yilin101    时间: 2017-6-16 08:45
letxxt 发表于 2017-6-16 08:44
弄个win小鸡开了

开个chorme的意思么?
作者: yilin101    时间: 2017-6-16 08:47
http://soncy.me/2013/05/05/server-stock-monitor.html  这个不错 但是要nodejs 还得再配置个机子
作者: yilin101    时间: 2017-6-16 09:17
本帖最后由 yilin101 于 2017-6-16 09:26 编辑

大佬们帮帮忙
作者: the2ndface    时间: 2017-6-16 09:27
难道不是写个SHELL监控日志文件,然后调用PHP发个邮件么
作者: yilin101    时间: 2017-6-16 09:29
the2ndface 发表于 2017-6-16 09:27
难道不是写个SHELL监控日志文件,然后调用PHP发个邮件么

一直想着网页  忘记还有日志了
作者: 今晚我是你的    时间: 2017-6-16 09:29
chrome插件叫什么,求
作者: wangcan45    时间: 2017-6-16 09:32
uptimerobot/statuscake试下
作者: yilin101    时间: 2017-6-16 09:37
wangcan45 发表于 2017-6-16 09:32
uptimerobot/statuscake试下

我是检查ss可用性
作者: 南小鸟    时间: 2017-6-16 09:39
file_get_contents就行,返回false就执行发送邮件代码
作者: yilin101    时间: 2017-6-16 09:41
今晚我是你的 发表于 2017-6-16 09:29
chrome插件叫什么,求

page monitor
作者: yilin101    时间: 2017-6-16 09:44
本帖最后由 yilin101 于 2017-6-16 09:50 编辑

这个http://443502.xyz/thread-32575-1-1.html

成功了 感谢
作者: Eric.c    时间: 2017-6-16 09:49
本帖最后由 Eric.c 于 2017-6-16 09:56 编辑

新建php文件,内容如下:



  1.         <?php
  2.         ignore_user_abort();
  3.         set_time_limit(0);
  4.         
  5.         
  6.         while(true)
  7.         {
  8.             $f = file_get_contents("http:xxxxx");
  9.             $m = md5($f);

  10.             $hash = file_get_contents("hash.txt");
  11.             if($hash!=$m)
  12.             {
  13.                 file_put_contents("hash.txt",$m);
  14.                 mail("[email protected]","发生变化","内容。。。");       //mail 函数如果使用过多,有些邮箱会让他直接进垃圾邮件或者拒收,本质是调用linux的sendmail 之类发送。
  15.                
  16.             }
  17.             
  18.             echo "执行了一次<br>";
  19.             sleep(60*15);    //休眠15分钟
  20.             
  21.         }
  22.         
  23.         
复制代码



然后浏览器访问这个php文件对应的网址,然后关闭浏览器即可。


作者: yilin101    时间: 2017-6-16 09:51
Eric.c 发表于 2017-6-16 09:49
新建php文件,内容如下:

不用任务 这么吊?
作者: Eric.c    时间: 2017-6-16 09:53
yilin101 发表于 2017-6-16 09:51
不用任务 这么吊?

为啥要用crontab?


ignore_user_abort();
set_time_limit(0);

这2个函数确保只要页面被访问一次,除非nginx和php环境死掉,否则无需
作者: yilin101    时间: 2017-6-16 09:53
Eric.c 发表于 2017-6-16 09:49
新建php文件,内容如下:

有点看不懂
作者: Eric.c    时间: 2017-6-16 09:56
yilin101 发表于 2017-6-16 09:53
有点看不懂



你服务器安装了php+apache/nigix之类的对吧。

把文件放到你的wwwroot目录里,假设是A.php ,你的ip假设是11.1.1.1 ,那你就访问一下 http://11.1.1.1/a.php
作者: yilin101    时间: 2017-6-16 09:58
Eric.c 发表于 2017-6-16 09:56
你服务器安装了php+apache/nigix之类的对吧。

把文件放到你的wwwroot目录里,假设是A.php ,你的ip ...

这个我知道

刚才是不理解:
ignore_user_abort();
set_time_limit(0);

这个是忽略用户关闭浏览器  也就是循环执行是吗
作者: Eric.c    时间: 2017-6-16 09:58
本帖最后由 Eric.c 于 2017-6-16 10:00 编辑
yilin101 发表于 2017-6-16 09:58
这个我知道

刚才是不理解:


ignore_user_abort();  忽略关闭浏览器
set_time_limit(0);      永不超时


这脚本最大问题就是这个线程始终会跑着。。。。 不会跟crontab一样,执行完就结束。

但胜在轻便。





作者: yilin101    时间: 2017-6-16 10:02
Eric.c 发表于 2017-6-16 09:58
ignore_user_abort();  忽略关闭浏览器
set_time_limit(0);      永不超时

感谢 我试一下
作者: free9901    时间: 2017-6-16 10:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: Eric.c    时间: 2017-6-16 10:27
yilin101 发表于 2017-6-16 10:02
感谢 我试一下


没事再撸一个性能版本给你
golang



  1. package main

  2. import (
  3.         "fmt"
  4.         "log"
  5.         "net/http"
  6.         "os"
  7.         "gopkg.in/gomail.v1"
  8.         "strconv"
  9.         "io/ioutil"
  10.         "strings"
  11.         "time"
  12. )

  13. var url = "网址"
  14. var file ="path.txt"
  15. //邮件内容修改sendmail函数

  16. func main() {

  17.         for   {
  18.                 resp, err := http.Get(url)
  19.                 if err != nil {
  20.                         fmt.Println(err)
  21.                         log.Fatal(err)
  22.                 }
  23.                 if resp.StatusCode == http.StatusOK {
  24.                         fmt.Println(resp.StatusCode)
  25.                 }
  26.                 defer resp.Body.Close()

  27.                 len:=resp.ContentLength
  28.                 lenstr:=strconv.FormatInt(len,10)


  29.                 if IsFile(file) == false {
  30.                         FilePutContent(file,lenstr)
  31.                         println("找不到"+file+"文件,开始初始化!如多次都是如此,检查目录有没写权限")
  32.                 }else{
  33.                         c,_ := FileGetContent(file)
  34.                         if !strings.EqualFold(c,lenstr){
  35.                                 sendmail()
  36.                                 FilePutContent(file,lenstr)
  37.                         }

  38.                 }


  39.                 time.Sleep(time.Minute*15)
  40.         }


  41. }





  42. func IsFile(file string) bool {
  43.         f, e := os.Stat(file)
  44.         if e != nil {
  45.                 return false
  46.         }
  47.         return !f.IsDir()
  48. }


  49. func FilePutContent(file string, content string) (int, error) {
  50.         fs, e := os.Create(file)
  51.         if e != nil {
  52.                 return 0, e
  53.         }
  54.         defer fs.Close()
  55.         return fs.WriteString(content)
  56. }

  57. func FileGetContent(file string) (string, error) {
  58.         if !IsFile(file) {
  59.                 return "", os.ErrNotExist
  60.         }
  61.         b, e := ioutil.ReadFile(file)
  62.         if e != nil {
  63.                 return "", e
  64.         }
  65.         return string(b), nil
  66. }


  67. func  sendmail()  {
  68.         msg := gomail.NewMessage()
  69.         msg.SetHeader("From", "发件人地址[email protected]")
  70.         msg.SetHeader("To", "收件人地址[email protected]")
  71.         msg.SetHeader("Subject", "邮件标题")
  72.         msg.SetBody("text/html", "邮件内容,支持HTML!")


  73.         // NewMailer参数:smtp地址,用户名,密码,端口
  74.         mailer := gomail.NewMailer("发件人的smtp地址:smtp.example.com", "用户名user", "密码123456", 25)
  75.         if err := mailer.Send(msg); err != nil {
  76.                 panic(err)
  77.         }
  78. }
复制代码

作者: yilin101    时间: 2017-6-16 10:30
Eric.c 发表于 2017-6-16 10:27
没事再撸一个性能版本给你
golang

这个就有点吊了 不会用
作者: 今晚我是你的    时间: 2017-6-16 10:47
Eric.c 发表于 2017-6-16 10:27
没事再撸一个性能版本给你
golang

怎么用这个,求说明
作者: Eric.c    时间: 2017-6-16 10:52
本帖最后由 Eric.c 于 2017-6-16 10:54 编辑
今晚我是你的 发表于 2017-6-16 10:47
怎么用这个,求说明



按需修改后编译一下,进入文件所在目录,执行编译命令   go build

要linux用必须先安装linux 上的golang, 很简单,百度一下即可
大意是 下载包,解压后,设置下环境,即可。

ps:
记得编译之前先执行一次
go get gopkg.in/gomail.v1 ,安装smtp发送库
作者: madacr    时间: 2017-6-16 11:11
哪里用这么麻烦? 一个软件全部搞定。

WebSite-Watcher
(, 下载次数: 0)
作者: yilin101    时间: 2017-6-16 11:12
madacr 发表于 2017-6-16 11:11
哪里用这么麻烦? 一个软件全部搞定。

WebSite-Watcher

大哥 不想开电脑啊
作者: yuqyu    时间: 2017-6-16 16:14
Eric.c大佬怎么被禁言了啊
作者: wenguonideshou    时间: 2017-6-16 16:47
意思是发现某个网页里面的“不可用”三个字吗?
作者: zhaoxi    时间: 2017-6-16 16:49
yilin101 发表于 2017-6-16 09:37
我是检查ss可用性

你用uptimerobot 他每五分钟检查一次你的ss端口 如果ss进程挂了,就发邮件告诉你。
作者: yilin101    时间: 2017-6-16 17:06
zhaoxi 发表于 2017-6-16 16:49
你用uptimerobot 他每五分钟检查一次你的ss端口 如果ss进程挂了,就发邮件告诉你。 ...

大佬这个方法确实不错




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4