aboutsummaryrefslogblamecommitdiff
path: root/tools/ipconverter/ipconverter.py
blob: 6b01d5d00d4b7cd253c62b7c27083f707947d8fd (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12




                      






                                                                                      


                                                      




                                                                     




                                                                     






                                             
#!/usr/bin/env python3

import argparse
import ipaddress
import sys

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 line in args.infile.readlines()
    if (ip := line.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))


def conv(n):
    """helper function to convert based on the name of the program"""
    return 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)