about summary refs log tree commit diff
path: root/tools/ipconverter/ipconverter.py
blob: fffc6fa70610cd00e4acfd1002fffa8e0f12a4fb (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
#!/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)