IP地址探秘:识别与解析的Python之旅?

时间:2024-10-18 10:27:54

IP地址探秘:识别与解析的Python之旅 ????

探索如何用Python轻松分类和生成IP地址,让网络管理变得简单而有趣!

要处理IP地址并判断其类型(单播、多播、私有、环回或公有),我们可以使用Python的ipaddress模块。下面是一个示例代码,完成了您所要求的功能,并输出该网络的所有子网IP。

import ipaddress

def classify_ip(ip_str):
    # 将字符串转换为IPv4地址对象
    ip = ipaddress.ip_address(ip_str)

    # 判断IP地址类型
    if ip.is_loopback:
        ip_type = "环回地址"
    elif ip.is_private:
        ip_type = "私有IP"
    elif ip.is_multicast:
        ip_type = "多播地址"
    elif ip.is_reserved:
        ip_type = "保留地址"
    else:
        ip_type = "公有IP"

    return ip_type

def list_subnet_ips(subnet_str):
    # 将字符串转换为IPv4网络对象
    subnet = ipaddress.ip_network(subnet_str)
    
    # 列出所有子网IP
    return [str(ip) for ip in subnet.hosts()]

def main():
    # 输入IP地址和子网
    ip_input = input("请输入一个IP地址: ")
    subnet_input = input("请输入一个子网 (例如 192.168.1.0/24): ")

    # 分类IP地址
    ip_type = classify_ip(ip_input)
    print(f"IP地址 {ip_input} 是: {ip_type}")

    # 输出该网络的所有子网IP
    print(f"在子网 {subnet_input} 中的所有主机IP:")
    subnet_ips = list_subnet_ips(subnet_input)
    for ip in subnet_ips:
        print(ip)

if __name__ == "__main__":
    main()

使用说明

  1. 运行上述代码。
  2. 输入一个IP地址,例如 192.168.1.1
  3. 输入一个子网,例如 192.168.1.0/24

程序将输出:

  • 该IP地址的分类(环回地址、私有IP、多播地址、公有IP)。
  • 指定子网中的所有主机IP地址。

注意事项

  • 确保您的输入是有效的IP地址和子网格式。
  • 如果需要支持IPv6,可以稍作修改来适应IPv6地址的判断和处理。