#!/usr/bin/env python3 from csv import DictReader from datetime import datetime, timezone from os import scandir from os.path import join def parse(): NOW = datetime.now() active_leases = {} for file in scandir("/var/lib/kea/"): with open(file.path) as f: for row in DictReader(f): expires = datetime.fromtimestamp(int(row["expire"])) if expires >= NOW: if ( row["address"] not in active_leases or active_leases[row["address"]]["expires_dt"] < expires ): row["expires_dt"] = expires active_leases[row["address"]] = row return active_leases.values() def print_table(leases): print(""" address | MAC | expires | hostname -----------------+-------------------+---------+----------""") for lease in sorted(leases, key=lambda r: r["address"]): print( f' {lease["address"]:<15} | {lease["hwaddr"].lower()} | {lease["expires_dt"]:%H:%M} | {lease["hostname"]}' ) if __name__ == "__main__": print_table(parse())