frappy-scan: resolve ip numbers to names

Change-Id: I07bf7c274aeb52f2aaa58e8aa2f3bcb2788556ee
This commit is contained in:
zolliker 2025-03-17 09:36:50 +01:00
parent b66acd4d73
commit fdc868c2d7

View File

@ -59,16 +59,23 @@ def decode(msg, addr):
def print_answer(answer, *, short=False): def print_answer(answer, *, short=False):
try:
hostname = socket.gethostbyaddr(answer.address)[0]
address = hostname
numeric = f' ({answer.address})'
except Exception:
address = answer.address
numeric = ''
if short: if short:
# NOTE: keep this easily parseable! # NOTE: keep this easily parseable!
print(f'{answer.equipment_id} {answer.address}:{answer.port}') print(f'{answer.equipment_id} {address}:{answer.port}')
return return
print(f'Found {answer.equipment_id} at {answer.address}:') print(f'Found {answer.equipment_id} at {address}{numeric}:')
print(f' Port: {answer.port}') print(f' Port: {answer.port}')
print(f' Firmware: {answer.firmware}') print(f' Firmware: {answer.firmware}')
desc = answer.description.replace('\n', '\n ') desc = answer.description.replace('\n', '\n ')
print(f' Node description: {desc}') print(f' Node description: {desc}')
print() print('-' * 80)
def scan(max_wait=1.0): def scan(max_wait=1.0):
@ -119,10 +126,14 @@ def listen(*, short=False):
if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('-l', '--listen', action='store_true', parser.add_argument('-l', '--listen', action='store_true',
help='Print short info. ' help='Keep listening after the broadcast.')
'Keep listening after the broadcast.') parser.add_argument('-s', '--short', action='store_true',
help='Print short info (always on when listen).')
args = parser.parse_args(sys.argv[1:]) args = parser.parse_args(sys.argv[1:])
short = args.listen or args.short
if not short:
print('-' * 80)
for answer in scan(): for answer in scan():
print_answer(answer, short=args.listen) print_answer(answer, short=short)
if args.listen: if args.listen:
listen(short=args.listen) listen(short=short)