在客户端机器上创建脚本

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

zabbix 监控域名证书到期时间!!!!的更多相关文章

  1. zabbix监控ssl证书到期时间

    监控脚本 cat ssl_check.sh #!/bin/bash # #获取ssl证书的过期时间 #menghao #获取证书的有效时间 time=$(echo | openssl s_client ...

  2. zabbix监控ssl证书过期时间

    获取证书过期时间脚本: /etc/zabbix/scripts/check-cert-expire.sh: #!/bin/bash host=$ port=$ end_date=`/usr/bin/o ...

  3. 查看IOS-app证书到期时间

    参照: iOS企业版证书到期 https://www.jianshu.com/p/44b0dc46ef37 如果不能十分确定每一个打出来的ipa的有效期(过期时间),而又需要关注它具体什么时候需要强制 ...

  4. 查看域名https证书到期时间

    1.通过域名获取: echo | openssl s_client -servername 域名 -connect 域名:443 2>/dev/null | openssl x509 -noou ...

  5. zabbix监控SSL证书有效期

    想给公司网站加上证书的监控,发现agent无此监控项.科普之后发现需要自行添加脚本以及一些操作. 环境信息 系统版本: Ubuntu20.04 zabbix server版本:5.4 (这个自定义貌似 ...

  6. 使用nagios监控ssl证书过期时间

    1.编写监控脚本. # vim check_ssl_expiry.sh #!/bin/bash STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 Host=$1 ...

  7. zabbix监控域名带宽

    代码地址:https://github.com/Ma-Jing/python/blob/master/ngxv2_traffic_daemon.py READ.md里有使用说明! #!/usr/bin ...

  8. 检查阿里云ssl证书到期情况

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-06-10 16:00 # @Author : Anthony.long # ...

  9. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

随机推荐

  1. U138097 小鱼吃大鱼 埃氏筛

    题目描述 小P同学在养殖一种非常凶狠的鱼,而且与其他鱼类不同,这种鱼越大越温顺,反而小鱼最凶残.当两条鱼相遇时, 小鱼会不断撕咬大鱼,每一口都咬下与它自身等重的肉(小鱼保持体重不变),直到大鱼的体重小 ...

  2. Django之实现分页显示内容

    关注公众号"轻松学编程"了解更多.- ​ 分页 1.作用 数据加载优化 2.前端引入bootstrap样式: {# 引入bootstrap样式的cdn资源 #} <link ...

  3. 对于RBAC与shiro的一些思考

    一.什么是RBAC模型 RBAC模型是一个解决用户权限问题的设计思维. 在最简单的RBAC模型中,将用户表设计为如下几个表 1.用户 2.角色 3.权限 以及这三张表衍生出来的两张中间表 4.用户_角 ...

  4. Python Tkinter小实例——模拟掷骰子

    什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...

  5. 直播软件开发关于Android、iOS中的视频采集步骤

    很多人对直播软件开发还是抱有想法的,但是在这个资本冷静的市场下,直播平台该怎么玩,在直播软件开发过程中哪些功能是必须具备的,这都是值得关注的话题.今天我们给大家分享一份详细的直播软件开发关于Andro ...

  6. Vue常用性能优化

    Vue常用性能优化 Vue常用的一些优化方式,主要是在构建项目过程需要注意的方面. 编码优化 避免响应所有数据 不要将所有的数据都放到data中,data中的数据都会增加getter和setter,并 ...

  7. JSON小结【json-lib】

    javabean:Address package com.baebae.model; public class Address { private String city; private Strin ...

  8. orphan sockets

    orphan sockets 介绍一下什么是 orphan sockets,简单来说就是该 socket 不与任何一个文件描述符相关联.例如,当应用调用 close() 关闭一个链接时,此时该 soc ...

  9. Cache一致性和内存模型

    -------------------------------

  10. UNP——第三章,套接字编程介绍

    1.套接字结构 多数套接字函数都有套接字结构参数,每个协议族都定义了自己的套接字结构,以 sockaddr_ 开始,并对应协议族的唯一后缀. struct sockaddr_in { uint8_t ...