zoukankan      html  css  js  c++  java
  • zabbix 监控域名证书到期时间!!!!

    在客户端机器上创建脚本

    vim /etc/zabbix/zabbix_agentd.d/check-cert-expire.sh

    #!/bin/sh

    host=$1
    port=$2
    end_date=`openssl s_client -servername $host -host $host -port $port -showcerts </dev/null 2>/dev/null |
    sed -n '/BEGIN CERTIFICATE/,/END CERT/p' |
    openssl x509 -text 2>/dev/null |
    sed -n 's/ *Not After : *//p'`
    # openssl 检验和验证SSL证书。
    # -servername $host 因一台主机存在多个证书,利用SNI特性检查
    # </dev/null 定向标准输入,防止交互式程序Hang。从/dev/null 读时,直接读出0 。
    # sed -n 和p 一起使用,仅显示匹配到的部分。 //,// 区间匹配。
    # openssl x509 -text 解码证书信息,包含证书的有效期。

    if [ -n "$end_date" ]
    then
    end_date_seconds=`date '+%s' --date "$end_date"`
    now_seconds=`date '+%s'`
    echo "($end_date_seconds-$now_seconds)/24/3600" | bc
    fi

     

    vim /etc/zabbix/zabbix_agentd.d/check_domain_beian.py

    #/usr/bin/env python
    #author:denglei
    #email:dl528888@gmail.com
    import urllib2
    import urllib
    import sys
    import datetime
    import time
    import re
    check_api='https://whois.aliyun.com/whois/domain/?spm=5334.7477273.3.1'%sys.argv[1]
    header={"User-Agent": "Mozilla-Firefox5.0"}
    result = urllib2.urlopen(check_api)
    check_result = result.read()
    print check_result
    c=re.findall("GODADDY.COM*",check_result)
    cc=re.findall("GoDaddy*",check_result)
    if len(c) == 0 and len(cc) == 0:
    c=re.findall("Registrar Registration Expiration Date.*",check_result)
    if len(c) == 0:
    c=re.findall("Expiration Date.*",check_result)
    m=re.search("d+-d+-d+..d+:d+:d+",c[0])
    d=m.group()
    e=re.sub('T',' ',d)
    elif len(c) ==0 and len(cc) != 0:
    c=re.findall("Record expires on.*",check_result)
    m=re.search("d+-d+-d+",c[0])
    d=m.group()
    e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%Y-%m-%d'))
    else:
    c=re.findall("Expiration Date.*",check_result)
    m=re.search("d+-w+-d+",c[0])
    if m is None:
    m=re.search("w+ w+ d+ d+:d+:d+ w+ d+",c[0])
    d=m.group()
    e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%a %b %d %H:%M:%S %Z %Y'))
    else:
    d=m.group()
    e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%d-%b-%Y'))
    if len(c) == 0:
    e=''
    def conver_time(start_time):
    start_time=start_time
    now_time=time.strftime('%Y-%m-%d %H:%M:%S')
    warn_start=datetime.datetime.strptime(start_time,"%Y-%m-%d %H:%M:%S")
    warn_finish=datetime.datetime.strptime(now_time,"%Y-%m-%d %H:%M:%S")
    #td=warn_finish - warn_start
    td=warn_start - warn_finish
    warn_continue=(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
    if warn_continue >= 86400 :
    day = warn_continue // 86400
    return day
    if len(e) != 0:
    print conver_time(e)
    else:
    print '1'

    vim /etc/zabbix/zabbix_agentd.d/userparameter_ssl_check_expire.conf

     UserParameter=ssl[*],/bin/bash /etc/zabbix/zabbix_agentd.d/check-cert-expire.sh $1 $2

    UserParameter=check_domain_beian[*],python /etc/zabbix/zabbix_agentd.d/check_domain_beian.py $1

     

    重启zabbix-agent

    进入zabbix后台配置监控项与触发器

    配置---主机---监控项---添加监控项

    键值: ssl[www.baidu.com,443]

     配置触发器,配置---主机--触发器--添加触发器

    表达式:{Zabbix server:ssl[www.baidu.com,443].last()}<10

  • 相关阅读:
    c++ 内存管理方式
    4.2学习总结
    PTA面向对象程序设计6-3 面积计算器(函数重载)
    3.26学习总结
    PTA——c++面向对象基础
    3.17学习总结.listview用法总结
    3.16学习总结
    3.15学习总结(Python爬取网站数据并存入数据库)
    android开发使用jxl创建Excel
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/iantest/p/9619454.html
Copyright © 2011-2022 走看看