about summary refs log tree commit diff
path: root/tools/ipconverter/ipconverter.py
blob: 6b01d5d00d4b7cd253c62b7c27083f707947d8fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/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)