#!/usr/bin/env python3 import argparse import ipaddress import sys import fileinput argp = argparse.ArgumentParser() argp.add_argument("infile", nargs="?", type=argparse.FileType("r"), default=sys.stdin) args = argp.parse_args() # read the input, filter out commented lines and remove new line characters string_ips = [ ip for l in args.infile.readlines() if (ip := l.strip()) and not ip.startswith("#") ] # convert entries to int if the string is a numeric value ips = list(map(lambda n: int(n) if n.isnumeric() else n, string_ips)) # helper function to convert based on the name of the program conv = lambda n: int(n) if argp.prog == "ip2int" else str(n) for ip in ips: try: r = conv(ipaddress.ip_address(ip)) print(f"{ip:15} → {r:15}") except Exception as e: print(f"error: {e}", file=sys.stderr)