zoneminder报警(微信、QQ提醒)

原创 2017年01月31日 15:43:41

zoneminder报警:当无人在家(dhcp保留手机IP,通过ping手机IP判断是否有人在家),过去10秒所有帧画面平均分值超过10分时,发送报警邮件到QQ邮箱,微信开通邮件提醒后,可以直接经过微信通知

suspend:检测到手机,不报警

fine:检测不到手机,开启报警,无警报

alarm:检测不到手机,开启报警,有警报

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
import smtplib
import datetime
import os
from email.mime.text import MIMEText


mail_host = 'smtp.163.com'
mail_user = '***'
mail_pass = '***'
mail_postfix = '163.com'
mail_subject = 'zm_alarm:' + datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S')
strsql='select e.id,f.score from frames f,events e where f.eventid=e.id and e.monitorid=1 and f.timestamp>date_sub(now(), interval 10 second)'


def send_mail(sub,content):
        me='zm<' + mail_user + '@' + mail_postfix + '>'
        msg = MIMEText(content,_subtype='html',_charset='utf-8')
        msg['Subject'] = sub
        msg['From'] = me
        msg['To'] = '***@qq.com'
        try:
                server = smtplib.SMTP()
                server.connect(mail_host)
                server.login(mail_user,mail_pass)
                server.sendmail(me, '***@qq.com', msg.as_string())
                server.close()
        except Exception, e:
                print str(e)


if len(os.popen('ping -c 2 -W 1 192.168.2.188 | grep time | grep from ').readlines()) == 0:
        db = MySQLdb.connect('192.168.2.50','zmuser','zmpass','zm' )
        cur = db.cursor()
        num = cur.execute(strsql)
        data = cur.fetchall()
        score = 0
        scoremax = 0
        eventid = 0
        for rec in data:
                score = score + rec[1]
                if rec[1] > 10:
                        eventid = rec[0]
                if scoremax < rec[1]:
                        scoremax=rec[1]
        if score > num * 10:
                print 'ALARM'
                send_mail(mail_subject + '[mx:%s]'%(scoremax,),\
                        'Alarm <br />EventID:<a href="http://***/zm?view=event&mode=stream&amp;mid=1&eid=%s">%s</a>'\
                        '<br />Frames: %s<br />MaxScore: %s<br />'\
                        'CAM_VIEW:<a href="http://***/zm/?view=montage&group=0" target="_blank">http://***/zm/?view=montage&group=0</a>'%(eventid,eventid,num,scoremax))
                os.system('echo `date "+%Y-%m-%d %H:%M:%S : 1 - ALARM."` >> /var/works/mlog')
        else:
                os.system('echo `date "+%Y-%m-%d %H:%M:%S : 0 - FINE."` >> /var/works/mlog')
        cur.close()
        db.close()
else:
        os.system('echo `date "+%Y-%m-%d %H:%M:%S : 0 - SUSPEND."` >> /var/works/mlog')
版权声明:本文为博主原创文章,未经博主允许不得转载。

2011年终总结:为了娜娜的微笑

蒙娜丽莎为什么笑?这个问题,如果达·芬奇自己都没有交代过,那么就没有人知道答案了,后来所有的答案都是推测的,答案众说纷纭,这里就不做评论了。作为计算机运行的代码,答案只能是一个,1就是1,2就是2。 ...

如何求C语言字符串长度(strlen函数和sizeof关键字)

原文出处:http://blog.csdn.net/kstrwind/article/details/8036555 ----------------------------------------...

飞鸽快信微信消息-LINUX服务器告警、状态监控预警、程序报警提醒等消息实时推送工具

一、产品介绍:飞鸽快信微信消息是一款基于微信的实时消息推送产品,可应用于服务器告警、LINUX服务器日志、状态监控异常提醒、阀值预警、程序报错报警提醒等场景,使用微信消息代替短信发送警告通知,实现精准...

ZABBIX 微信报警 插件(python无图)

ZABBIX可以实现短信、邮件、微信等各种报警,这三种基本大家都很熟悉, 现在基于微信写py,感觉钉钉的团队是从微信出来的,变量都不改,太懒了,说可以实现微信报警苍老师说过:Life is short...

整合nagios+cacti+微信、飞信实现网络监控系统报警

系统环境:rhel6.4 selinux disabled  和 iptables 整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将n...

python利用微信公众号报警代码

微信公众号共有三种,服务号、订阅号、企业号。它们在获取AccessToken上各有不同。 其中订阅号比较坑,它的AccessToken是需定时刷新,重复获取将导致上次获取的Acces...

通过微信企业号发送zabbix报警..

最近飞信不能用了…zabbix报警无法收到短信 … 其实搭建的方法很简单,微信官网的API文档也非常详细了.只是之前网上没有找到具体的文档..自己饶了不少弯路..刚开始用微信公众平台试了下..有一个...

zabbix微信报警脚本

#!/bin/bash ###SCRIPT_NAME:weixin.sh### ###send message from weixin for zabbix monitor### ###cuis...
  • bwlab
  • bwlab
  • 2016年01月02日 11:54
  • 10307

zabbix微信报警之企业号

1.各位看官,我是orange小菜,初来扎道,不足之处还请赤脚。 2.我看过网上也有很多的资料,但是我还是想和大家分析一下我的想法和编程思想,互喷哦! 3.我先把我的代码甩出来,供大家参考一下...

zabbix触发微信报警脚本(python)

  • 2016年07月19日 09:50
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zoneminder报警(微信、QQ提醒)
举报原因:
原因补充:

(最多只允许输入30个字)