Add unixtime option

This adds an option to return the expiration date in unixtime (time
since epoch).

It's particularly useful for alerting or monitoring systems that do
their own calculation based on the metric they receive (and not based on
exit codes).

For instance you can use the following in zabbix 5.4:
- item: check_expire["-H","{HOST.CONN}","-u"]
- trigger: last(/check_expire["-H","{HOST.CONN}","-u"])-now()<2592000

Where 2592000 is 30 days in seconds.
Faustin Lammler 1 year ago
parent 5c8a6af546
commit 01e65574e5
Signed by: faust
GPG Key ID: 390A2F27832A5C79
  1. 14
      check_expire

@ -42,10 +42,11 @@ verbose = False
domain = None
critical_t = datetime.timedelta(days=2)
warning_t = datetime.timedelta(days=7)
unixtime = False
# TODO implement timeout for HTTPS requests. -t option. Does Requests allow it?
def usage(msg=None):
print("Usage: %s -H domain-name [-c critical -w warning]" % sys.argv[0], end="")
print("Usage: %s -H domain-name [-c critical -w warning -u unixtime]" % sys.argv[0], end="")
if msg is not None and msg != "":
print(" (%s)" % msg)
else:
@ -80,8 +81,8 @@ def ok(msg=None):
sys.exit(STATE_OK)
try:
optlist, args = getopt.getopt (sys.argv[1:], "c:hH:vVw:",
["critical=", "expiration", "help", "verbose", "version", "warning="])
optlist, args = getopt.getopt (sys.argv[1:], "c:hH:vVw:u",
["critical=", "expiration", "help", "verbose", "version", "warning=", "unixtime"])
for option, value in optlist:
if option == "--critical" or option == "-c":
critical_t = datetime.timedelta(days=int(value))
@ -97,6 +98,8 @@ try:
sys.exit(STATE_OK)
elif option == "--warning" or option == "-w":
warning_t = datetime.timedelta(days=int(value))
elif option == "--unixtime" or option == "-u":
unixtime = True
else:
# Should never occur, it is trapped by getopt
print("Unknown option %s" % option)
@ -136,6 +139,9 @@ for event in rdap["events"]:
print("No recognized format for datetime \"%s\"" % event["eventDate"])
sys.exit(STATE_UNKNOWN)
now = datetime.datetime.now(tz=UTCINFO)
if unixtime == True:
print(int(expiration.strftime("%s")))
sys.exit(STATE_OK)
if expiration < now:
error("domain %s is already expired (%s ago)" % (domain, (now-expiration)))
rest = expiration-now
@ -146,5 +152,3 @@ for event in rdap["events"]:
else:
ok("expires in %s." % (rest))
error("No expiration found")

Loading…
Cancel
Save