forked from bortzmeyer/check_expire
Merge pull request 'Add unixtime option' (#2) from faust/check_expire:add-output into master
Reviewed-on: bortzmeyer/check_expire#2
This commit is contained in:
commit
86436ef1f0
14
README.md
14
README.md
@ -10,6 +10,7 @@ check_expire follows the usual Nagios rules. The options are:
|
|||||||
* -c: critical threshold in days
|
* -c: critical threshold in days
|
||||||
* -w: warning threshold in days
|
* -w: warning threshold in days
|
||||||
* -v: verbose details in output
|
* -v: verbose details in output
|
||||||
|
* -u: unixtime output
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -57,6 +58,17 @@ object Host "bortzmeyer-org" {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Zabbix configuration
|
||||||
|
|
||||||
|
For monitoring systems that do not rely on exit codes but on calculation mechanism based on the metric they receive you can use the `-u` option that will only return the expiration date in unixtime format.
|
||||||
|
|
||||||
|
For instance, you can use the following in zabbix 5.4:
|
||||||
|
|
||||||
|
* item: `check_expire["-H","{HOST.CONN}","-u"]`
|
||||||
|
* trigger (30 days before expiration): `last(/check_expire["-H","{HOST.CONN}","-u"])-now()<2592000`
|
||||||
|
|
||||||
|
Where `2592000` is the number of seconds in 30 days.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GPL. See LICENSE.
|
GPL. See LICENSE.
|
||||||
@ -68,5 +80,3 @@ Stéphane Bortzmeyer <stephane+chapril@bortzmeyer.org>.
|
|||||||
## Reference site
|
## Reference site
|
||||||
|
|
||||||
https://forge.chapril.org/bortzmeyer/check_expire Use the Gitea issue tracker to report bugs or wishes.
|
https://forge.chapril.org/bortzmeyer/check_expire Use the Gitea issue tracker to report bugs or wishes.
|
||||||
|
|
||||||
|
|
||||||
|
14
check_expire
14
check_expire
@ -42,10 +42,11 @@ verbose = False
|
|||||||
domain = None
|
domain = None
|
||||||
critical_t = datetime.timedelta(days=2)
|
critical_t = datetime.timedelta(days=2)
|
||||||
warning_t = datetime.timedelta(days=7)
|
warning_t = datetime.timedelta(days=7)
|
||||||
|
unixtime = False
|
||||||
# TODO implement timeout for HTTPS requests. -t option. Does Requests allow it?
|
# TODO implement timeout for HTTPS requests. -t option. Does Requests allow it?
|
||||||
|
|
||||||
def usage(msg=None):
|
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 != "":
|
if msg is not None and msg != "":
|
||||||
print(" (%s)" % msg)
|
print(" (%s)" % msg)
|
||||||
else:
|
else:
|
||||||
@ -80,8 +81,8 @@ def ok(msg=None):
|
|||||||
sys.exit(STATE_OK)
|
sys.exit(STATE_OK)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
optlist, args = getopt.getopt (sys.argv[1:], "c:hH:vVw:",
|
optlist, args = getopt.getopt (sys.argv[1:], "c:hH:vVw:u",
|
||||||
["critical=", "expiration", "help", "verbose", "version", "warning="])
|
["critical=", "expiration", "help", "verbose", "version", "warning=", "unixtime"])
|
||||||
for option, value in optlist:
|
for option, value in optlist:
|
||||||
if option == "--critical" or option == "-c":
|
if option == "--critical" or option == "-c":
|
||||||
critical_t = datetime.timedelta(days=int(value))
|
critical_t = datetime.timedelta(days=int(value))
|
||||||
@ -97,6 +98,8 @@ try:
|
|||||||
sys.exit(STATE_OK)
|
sys.exit(STATE_OK)
|
||||||
elif option == "--warning" or option == "-w":
|
elif option == "--warning" or option == "-w":
|
||||||
warning_t = datetime.timedelta(days=int(value))
|
warning_t = datetime.timedelta(days=int(value))
|
||||||
|
elif option == "--unixtime" or option == "-u":
|
||||||
|
unixtime = True
|
||||||
else:
|
else:
|
||||||
# Should never occur, it is trapped by getopt
|
# Should never occur, it is trapped by getopt
|
||||||
print("Unknown option %s" % option)
|
print("Unknown option %s" % option)
|
||||||
@ -136,6 +139,9 @@ for event in rdap["events"]:
|
|||||||
print("No recognized format for datetime \"%s\"" % event["eventDate"])
|
print("No recognized format for datetime \"%s\"" % event["eventDate"])
|
||||||
sys.exit(STATE_UNKNOWN)
|
sys.exit(STATE_UNKNOWN)
|
||||||
now = datetime.datetime.now(tz=UTCINFO)
|
now = datetime.datetime.now(tz=UTCINFO)
|
||||||
|
if unixtime == True:
|
||||||
|
print(int(expiration.strftime("%s")))
|
||||||
|
sys.exit(STATE_OK)
|
||||||
if expiration < now:
|
if expiration < now:
|
||||||
error("domain %s is already expired (%s ago)" % (domain, (now-expiration)))
|
error("domain %s is already expired (%s ago)" % (domain, (now-expiration)))
|
||||||
rest = expiration-now
|
rest = expiration-now
|
||||||
@ -146,5 +152,3 @@ for event in rdap["events"]:
|
|||||||
else:
|
else:
|
||||||
ok("expires in %s." % (rest))
|
ok("expires in %s." % (rest))
|
||||||
error("No expiration found")
|
error("No expiration found")
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user