diff --git a/check_osdb.py b/check_osdb.py new file mode 100755 index 0000000..a3d2435 --- /dev/null +++ b/check_osdb.py @@ -0,0 +1,49 @@ +#!/usr/bin/python3 +#coding=utf-8 +import subprocess +import argparse +import sys + +recognized = [ "debian", "arch" ] + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--verbose", "-v", action="store_true") + parser.add_argument("--expect") + args = parser.parse_args() + + quiet = not args.verbose + + try: + with open("/etc/os-release") as f: + lines = f.read().splitlines() + except Exception as e: + print(f"UNKNOWN - {e}") + sys.exit(3) + + detected_os = None + like_os = None + + for line in lines: + if line.startswith("ID_LIKE="): + for os in recognized: + if os in line: + like_os = os + if line.startswith("ID="): + for os in recognized: + if os in line: + detected_os = os + + if not detected_os: + if like_os: + detected_os = like_os + else: + detected_os = "unknown" + + if detected_os == args.expect: + print("OK - OS matches") + sys.exit(0) + + if args.expect != detected_os: + print(f"CRITICAL - MISSMATCH DETECTED {detected_os} != {args.expect}") + sys.exit(2)