From 79dc87c707bc9b9bb253901ac8c8915dc638d36c Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Tue, 12 Sep 2023 08:11:36 +0200 Subject: [PATCH] dnsleases pimped - output sorted by hostname + ipx --- dnsleases | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/dnsleases b/dnsleases index 41273e9..f4301a8 100755 --- a/dnsleases +++ b/dnsleases @@ -12,8 +12,13 @@ class host(object): self.hostname = '' self.lease_tm = 0 + def sortcriteria(h): + rv = h.hostname if h.hostname != '*' else '~' + rv += ".".join(["%03d" % int(v) for v in h.ip.split('.')]) + return rv.lower() + def __str__(self): - return "%-16s - %17s - %-10s - %15s - %s" % (self.ip, self.mac, self.state, time.asctime(time.localtime(self.lease_tm)), self.hostname) + return " * %-16s - %17s - %-10s - %15s - %s" % (self.ip, self.mac, self.state, time.asctime(time.localtime(self.lease_tm)), self.hostname) class hostlist(dict): @@ -27,10 +32,19 @@ class hostlist(dict): else: self[host.mac] = host + def vlan_list(self, vlan): + rv = hostlist() + for h in self.values(): + if h.vlan == vlan: + rv.append(h) + return rv + def __str__(self): + entries = list(self.values()) + entries.sort(key=host.sortcriteria) rv = "" - for key in self: - rv += str(self[key]) + '\n' + for h in entries: + rv += str(h) + '\n' return rv @@ -75,7 +89,5 @@ with open('/var/lib/misc/dnsmasq.leases', 'r') as fh: for vlan in [20, 30, 40, 50, 60, 90]: print("Hosts in VLAN %d" % vlan) - for host in hl.values(): - if host.vlan == vlan: - print(" *", host) + print(hl.vlan_list(vlan)) print()