From ef3ee7775a0115490b3a0bf8df23ec514658a999 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Wed, 9 Apr 2025 11:40:32 +0200 Subject: [PATCH] listboxes: show router ports --- listboxes | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/listboxes b/listboxes index 2bf1470..0e45486 100755 --- a/listboxes +++ b/listboxes @@ -23,20 +23,42 @@ def check_ssh(host, port=22): opt = sys.argv[-1] -header = ['box name', 'box type', 'frappy', 'R'] -if opt != 's': +if opt.startswith('-'): + opt = opt[1:] +header = ['box name', 'box type', 'frappy'] +if opt == 's': + header.append('R') +else: if opt == 'a': - header.extend(['*online ip ', 'MAC addr']) + header.extend(['router', '*online ip ', 'MAC addr']) else: - header.append('ip') + header.extend(['R', 'ip']) table = [header] for file in sorted(cfgdir.glob('*.cfg')): parser = ConfigParser() parser.read(file) info = {k: dict(parser[k]) for k in parser.sections()} - router = info.get('ROUTER') - router = 'R' if router else '' + router = info.get('ROUTER', {}) + if opt == 'a': + ports = sorted(router) + router = [] + following = None + for p in ports: + try: + pnum = int(p) + if pnum == following: + first = router[-1].split('-')[0] + router[-1] = f'{first}-{following}' + following += 1 + continue + following = pnum + 1 + except ValueError: + pnum = -1 + router.append(p) + router = ' '.join(router) + else: + router = 'R' if router else '' frappy = info.get('FRAPPY', {}).get('cfg', '') box = info.get('BOX', {}) row = [file.stem, box.get('type', 'unknown'), frappy, router] @@ -68,6 +90,8 @@ Usage: listboxes o # only boxes online (default) listboxes a # all boxes, all info listboxes s # short (without ip and online check) + + column R: router configured """ if opt in 'sao': print()