Mar-08-2023, 09:53 PM
It works and yes .... it's a bit nested :-/
Take what you need.
Take what you need.
import sys import ipaddress def interface(interface): interface = ipaddress.ip_interface(interface) ip = interface.ip ip_version = ip.version ptr = ip.reverse_pointer network = interface.network network_addr = network.network_address netmask = interface.netmask hostmask = interface.hostmask broadcast = network.broadcast_address return { "ip": str(ip), "ip_version": ip_version, "private": ip.is_private, "global": ip.is_global, "ptr": ptr, "network_addr": str(network_addr), "netmask": str(netmask), "hostmask": str(hostmask), "broadcast": str(broadcast), } print(sys.version) print() some_interfaces = [ "192.168.0.1/24", "192.168.172.10/24", "192.168.178.10/24", "10.10.1.5/16", "fd00::ffff:ac10:1/112", "1.2.3.4/23", ] for result in map(interface, some_interfaces): print("Processing ip", result["ip"]) print() for key, value in result.items(): key = f"{key}:" print(f"{key:<15} -> {value}") print()Output:
Output:3.8.16 (default, Mar 8 2023, 22:40:51)
[GCC 12.2.1 20230201]
Processing ip 192.168.0.1
ip: -> 192.168.0.1
ip_version: -> 4
private: -> True
global: -> False
ptr: -> 1.0.168.192.in-addr.arpa
network_addr: -> 192.168.0.0
netmask: -> 255.255.255.0
hostmask: -> 0.0.0.255
broadcast: -> 192.168.0.255
Processing ip 192.168.172.10
ip: -> 192.168.172.10
ip_version: -> 4
private: -> True
global: -> False
ptr: -> 10.172.168.192.in-addr.arpa
network_addr: -> 192.168.172.0
netmask: -> 255.255.255.0
hostmask: -> 0.0.0.255
broadcast: -> 192.168.172.255
Processing ip 192.168.178.10
ip: -> 192.168.178.10
ip_version: -> 4
private: -> True
global: -> False
ptr: -> 10.178.168.192.in-addr.arpa
network_addr: -> 192.168.178.0
netmask: -> 255.255.255.0
hostmask: -> 0.0.0.255
broadcast: -> 192.168.178.255
Processing ip 10.10.1.5
ip: -> 10.10.1.5
ip_version: -> 4
private: -> True
global: -> False
ptr: -> 5.1.10.10.in-addr.arpa
network_addr: -> 10.10.0.0
netmask: -> 255.255.0.0
hostmask: -> 0.0.255.255
broadcast: -> 10.10.255.255
Processing ip fd00::ffff:ac10:1
ip: -> fd00::ffff:ac10:1
ip_version: -> 6
private: -> True
global: -> False
ptr: -> 1.0.0.0.0.1.c.a.f.f.f.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa
network_addr: -> fd00::ffff:ac10:0
netmask: -> ffff:ffff:ffff:ffff:ffff:ffff:ffff:0
hostmask: -> ::ffff
broadcast: -> fd00::ffff:ac10:ffff
Processing ip 1.2.3.4
ip: -> 1.2.3.4
ip_version: -> 4
private: -> False
global: -> True
ptr: -> 4.3.2.1.in-addr.arpa
network_addr: -> 1.2.2.0
netmask: -> 255.255.254.0
hostmask: -> 0.0.1.255
broadcast: -> 1.2.3.255
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
All humans together. We don't need politicians!