From e9659e3b9a4aea2a10e0b465b9d5eeed7def8509 Mon Sep 17 00:00:00 2001 From: Hamish Coleman Date: Wed, 6 Sep 2023 09:00:23 +0100 Subject: [PATCH] Add a last_seen column to n2n-ctl with human readable values --- scripts/n2n-ctl | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/scripts/n2n-ctl b/scripts/n2n-ctl index e389ecb..c60c824 100755 --- a/scripts/n2n-ctl +++ b/scripts/n2n-ctl @@ -7,6 +7,7 @@ import argparse import socket import json import collections +import time class JsonUDP(): @@ -171,6 +172,24 @@ def str_table(rows, columns, orderby): return ''.join(result) +def num2timestr(seconds): + """Convert a number of seconds into a human time""" + days, seconds = divmod(seconds, (60*60*24)) + hours, seconds = divmod(seconds, (60*60)) + minutes, seconds = divmod(seconds, 60) + + r = [] + if days: + r += [f"{days}d"] + if hours: + r += [f"{hours}h"] + if minutes: + r += [f"{minutes}m"] + if seconds: + r += [f"{seconds}s"] + return "".join(r) + + def subcmd_show_supernodes(rpc, args): rows = rpc.read('supernodes') columns = [ @@ -179,8 +198,13 @@ def subcmd_show_supernodes(rpc, args): 'macaddr', 'sockaddr', 'uptime', + 'last_seen', ] + now = int(time.time()) + for row in rows: + row["last_seen"] = num2timestr(now - row["last_seen"]) + return str_table(rows, columns, args.orderby) @@ -192,8 +216,13 @@ def subcmd_show_edges(rpc, args): 'macaddr', 'sockaddr', 'desc', + 'last_seen', ] + now = int(time.time()) + for row in rows: + row["last_seen"] = num2timestr(now - row["last_seen"]) + return str_table(rows, columns, args.orderby)