#!/usr/bin/python3 import re import subprocess import time import ltsdb_record p = subprocess.run(["/usr/bin/lsb_release", "-ir"], capture_output=True, text=True) for ln in p.stdout.split("\n")[:-1]: m = re.match(r"(.*?)\s*:\s+(.*)", ln) if m: if m.group(1) == "Distributor ID": distributor = m.group(2).lower() elif m.group(1) == "Release": release = m.group(2) if distributor == "ubuntu": # special rule for ubuntu. The format is year.month, so we convert the # months into fractional years m = re.match(r"(\d+)\.(\d+)", release) release = int(m.group(1)) + (int(m.group(2)) - 1) / 12 else: # for everybody else we assume its a fp number release = float(release) report0 = [] report0.append({ "measure": "os_version_" + distributor, "unit": "version", "value": release}) now = time.time() report = [ { "description": { "hostname": ltsdb_record.node, "measure": r["measure"], "unit": r["unit"] }, "data": [ [now, r["value"]] ] } for r in report0 ] success = ltsdb_record.record_observations(report) exit(1 - success)