code
This commit is contained in:
7
whois/example.host.name.json
Normal file
7
whois/example.host.name.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"domains": [
|
||||
"example.com",
|
||||
"example.org",
|
||||
"example.net"
|
||||
]
|
||||
}
|
||||
31
zabbix-whois-check.py
Normal file
31
zabbix-whois-check.py
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# checks when a domain is going to expire
|
||||
# and sends the time to zabbix
|
||||
# new version that reads from a json file
|
||||
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
import whois
|
||||
from pyzabbix import ZabbixMetric, ZabbixSender
|
||||
|
||||
wwwhost = sys.argv[1]
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
with open(dir_path+'/whois/'+wwwhost+'.json', 'r') as read_file:
|
||||
domains = json.load(read_file)
|
||||
|
||||
for domain in domains['domains']:
|
||||
w = whois.whois(domain)
|
||||
if isinstance(w.expiration_date, list):
|
||||
packet = ZabbixMetric(wwwhost, 'domain.expiry['+domain+']', w.expiration_date[0].timestamp()),
|
||||
else:
|
||||
packet = ZabbixMetric(wwwhost, 'domain.expiry['+domain+']', w.expiration_date.timestamp()),
|
||||
result = ZabbixSender(use_config=True).send(packet)
|
||||
|
||||
## some tests
|
||||
#print(w)
|
||||
#print(w.domain_name, w.expiration_date)
|
||||
#print(packet)
|
||||
#print(result)
|
||||
39
zabbix-whois-discovery.py
Normal file
39
zabbix-whois-discovery.py
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# read domains from a json array
|
||||
# and feed them into zabbix
|
||||
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
from pyzabbix import ZabbixMetric, ZabbixSender
|
||||
|
||||
wwwhost = sys.argv[1]
|
||||
asdf = ''
|
||||
idx = 0
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
with open(dir_path+'/whois/'+wwwhost+'.json', 'r') as read_file:
|
||||
domains = json.load(read_file)
|
||||
|
||||
for idx, thing in enumerate(domains['domains']):
|
||||
if idx == 0:
|
||||
asdf += '{"{#WHOISDOMAIN}":"'+thing+'"}'
|
||||
else:
|
||||
asdf += ',{"{#WHOISDOMAIN}":"'+thing+'"}'
|
||||
|
||||
done = '{"data":['+asdf+']}'
|
||||
|
||||
|
||||
packet = ZabbixMetric(wwwhost, 'domain.expiry.item', done),
|
||||
result = ZabbixSender(use_config=True).send(packet)
|
||||
|
||||
## some tests
|
||||
#print(done)
|
||||
#print(packet)
|
||||
#print(result)
|
||||
|
||||
## another test
|
||||
#f = open('/tmp/zabbix-whois.txt', 'w')
|
||||
#f.write(done)
|
||||
#f.close()
|
||||
131
zabbix-whois-template.xml
Normal file
131
zabbix-whois-template.xml
Normal file
@@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>3.4</version>
|
||||
<date>2018-06-04T11:01:41Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template Whois Expiry</template>
|
||||
<name>Template Whois Expiry</name>
|
||||
<description/>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Domains</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items/>
|
||||
<discovery_rules>
|
||||
<discovery_rule>
|
||||
<name>Whois Domain Discovery</name>
|
||||
<type>2</type>
|
||||
<snmp_community/>
|
||||
<snmp_oid/>
|
||||
<key>domain.expiry.item</key>
|
||||
<delay>0</delay>
|
||||
<status>0</status>
|
||||
<allowed_hosts/>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<filter>
|
||||
<evaltype>0</evaltype>
|
||||
<formula/>
|
||||
<conditions/>
|
||||
</filter>
|
||||
<lifetime>1d</lifetime>
|
||||
<description>This is a trapper item, which means that an external script sends data to Zabbix Server on its own. A bit like the active agent I suppose.</description>
|
||||
<item_prototypes>
|
||||
<item_prototype>
|
||||
<name>Domain {#WHOISDOMAIN} expiry date</name>
|
||||
<type>2</type>
|
||||
<snmp_community/>
|
||||
<snmp_oid/>
|
||||
<key>domain.expiry[{#WHOISDOMAIN}]</key>
|
||||
<delay>0</delay>
|
||||
<history>3d</history>
|
||||
<trends>365d</trends>
|
||||
<status>0</status>
|
||||
<value_type>3</value_type>
|
||||
<allowed_hosts/>
|
||||
<units>unixtime</units>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Domains</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
<logtimefmt/>
|
||||
<preprocessing/>
|
||||
<jmx_endpoint/>
|
||||
<application_prototypes/>
|
||||
<master_item_prototype/>
|
||||
</item_prototype>
|
||||
</item_prototypes>
|
||||
<trigger_prototypes>
|
||||
<trigger_prototype>
|
||||
<expression>{Template Whois Expiry:domain.expiry[{#WHOISDOMAIN}].last()} - {Template Whois Expiry:domain.expiry[{#WHOISDOMAIN}].now()}<14d</expression>
|
||||
<recovery_mode>0</recovery_mode>
|
||||
<recovery_expression/>
|
||||
<name>Domain {#WHOISDOMAIN} is about to expire</name>
|
||||
<correlation_mode>0</correlation_mode>
|
||||
<correlation_tag/>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>4</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<manual_close>0</manual_close>
|
||||
<dependencies/>
|
||||
<tags/>
|
||||
</trigger_prototype>
|
||||
</trigger_prototypes>
|
||||
<graph_prototypes/>
|
||||
<host_prototypes/>
|
||||
<jmx_endpoint/>
|
||||
</discovery_rule>
|
||||
</discovery_rules>
|
||||
<httptests/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
</zabbix_export>
|
||||
Reference in New Issue
Block a user