【问题标题】:How to find Network ID如何查找网络 ID
【发布时间】:2020-09-01 14:45:51
【问题描述】:

我想在 python 中使用 ipaddress 和和子网掩码之间的按位运算来查找网络 ID。我想用这种传统方法我的示例代码在这里

hostname=input("Enter the IP Address: ")
print(hostname)
if hostname >= "0.0.0.0" and hostname <= "127.255.255.255":
    print("Class A")
    print("The default subnet mask is: 255.0.0.0")
    j=(hostname & 255.0.0.0)
    print("The network id is ",j)

【问题讨论】:

  • Edit 标记您使用的语言,解释运行此代码时会发生什么,并解释为什么结果不正确或不充分。 (这可能是因为您尝试使用没有真正意义的字符串做一些事情,需要先转换为整数。)

标签: python ip-address


【解决方案1】:

由于您正在接受输入,因此请始终确保对输入进行清理。 使用ipaddress.ip_interface()ipaddress.ip_network() 确保给定的输入首先是有效的IP。

另外你输入的hostname是一个字符串,所以按位运算会失败。

一旦您使用ipaddresss.ip_address(hostname),您将获得一个IPv4Address 对象,它允许您检查许多属性。

ipaddress 标准包中还有其他帮助函数,用于获取 CIDR 值并创建 IPvXNetwork 对象,也许这就是你要找的,检查ipaddress HOW-TO

大致如下:

import ipaddress

try:
    inp = input("Enter the IP Address: ")
    iface = ipaddress.ip_interface(inp)
except ValueError as e:
    # crude way of handling and printing errors
    # there are elegant ways to handle and proceed
    print(e)
    exit(1)
else:
    netword_id = iface.network
    hostname = iface.ip

注意:我对原始答案进行了一些编辑,您可能想使用ipaddress.ip_interface()

【讨论】:

  • 好的,我会尝试,但请告诉我您的解决方案的基本语法
  • @ComicsVibe,请检查更新后的答案,我还提供了 Python 操作指南部分的链接,其中介绍了如何使用此 ipaddress 模块以及处理一般 IP 地址
猜你喜欢
  • 2021-10-25
  • 2022-11-02
  • 1970-01-01
  • 2012-09-10
  • 2021-11-08
  • 2015-06-15
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
相关资源
最近更新 更多