diff --git a/check_cert_file_expiry.py b/check_cert_file_expiry.py index 11f8c36..9734680 100755 --- a/check_cert_file_expiry.py +++ b/check_cert_file_expiry.py @@ -5,6 +5,7 @@ import datetime import argparse import enum import sys +from email.utils import parsedate_to_datetime class Status(enum.Enum): OK = 0 @@ -18,12 +19,10 @@ def get_expiry_date(filename): "x509", "-in", filename, "-enddate", - "-dateopt", "iso_8601", "-noout"], text=True, capture_output=True, check=True) date = finished_process.stdout.strip().split("=")[1] - date = date.replace("Z", "") # needed for python < 3.11, because python is stupid - date = datetime.datetime.fromisoformat(date) + date = parsedate_to_datetime(date) return date def is_expired(filename, days_from_now=0): @@ -54,7 +53,8 @@ if __name__ == '__main__': try: expiry_date = get_expiry_date(args.file) - perfdata["expires_in"] = (expiry_date - datetime.datetime.now()).days + + perfdata["expires_in"] = (expiry_date - datetime.datetime.now(expiry_date.tzinfo)).days if is_expired(args.file, 0): message = f"Expired on {expiry_date}"