从IP地址获取子网

2023-11-27

我正在尝试获取我拥有的 IP 地址的子网。

Eg :

1

子网掩码 :255.255.255.0

Input : 192.178.2.55

输出 :192.178.2.0

2

子网掩码 :255.255.0.0

Input : 192.178.2.55

输出 :192.178.0.0

目前,我这样做的方式(对于子网 255.255.255.0)

ip =  '192.178.2.55'
subnet = '.'.join(ip.split('.')[:2]) + '.0.0'
subnet
'192.178.0.0'

我看到蟒蛇有IP地址图书馆。但是我找不到可以完成上述任务的方法。

奖金:自IP地址支持 IPv4 和 IPv6(如果相同的功能可用于两者)。


The ipaddress.ip_network函数可以采用任何字符串格式IPv4Network and IPv6Network可以采取,包括address/mask format.

由于您实际上传递的不是网络地址,而是该网络内设置了主机位的地址,因此您需要使用strict=False.

So:

>>> net = ipaddress.ip_network('192.178.2.55/255.255.255.0', strict=False)
>>> net
IPv4Network('192.178.2.0/24')
>>> net.network_address
IPv4Address('192.178.2.0')
>>> net.netmask
IPv4Address('255.255.255.0')

或者,您可以使用ip_interface并从那里提取网络:

>>> iface = ipaddress.ip_interface('192.178.2.55/255.255.255.0')
>>> iface
IPv4Interface('192.178.2.55/24')
>>> iface.network
IPv4Network('192.178.2.0/24')
>>> iface.netmask
IPv4Address('255.255.255.0')
>>> iface.ip
IPv4Address('192.178.2.55')
>>> iface.network.network_address
IPv4Address('192.178.2.0')

您想要两者中的哪一个取决于您到底想要代表什么。请注意,Interface 类型是 Address 类型的子类,当然它们会记住用于构造它们的原始地址,而 Network 类会记住网络地址;这两者之一通常是决定因素。

当然,它们都可以在 IPv6 上正常工作:

>>> ipaddress.ip_interface('2001:db8::1000/32')
IPv6Interface('2001:db8::1000/32')
>>> ipaddress.ip_interface('2001:db8::1000/32').network.network_address
IPv6Address('2001:db8::')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从IP地址获取子网 的相关文章

随机推荐

  • OpenSSL::SSL::SSLContext SNI servername_cb 不工作

    正如中所引用的OpenSSL X509 证书显示错误域名的证书 我需要使用 TLSv1 或更高版本and 服务器名称指示扩大 即使ssl version and servername cb通过设置SSLContext 我仍然收到错误的证书m
  • 动态创建一个继承自ActiveRecord的类?

    我希望能够动态创建继承自 ActiveRecord 的类 以便在 Rails 应用程序外部编写脚本 我被困在这样的事情上 require active record def create arec table name Class new
  • 如何在graphql和strapi中传递JSON对象

    当我手动编写突变查询 在 graphql 插件中 时 它正在工作 mutation createExam input data name myName desription ggg questions gf hello time 2 sub
  • Java Web 服务返回带有 > 和 < 而不是 > 和 < 的字符串

    我有一个返回字符串的 java web 服务 我正在创建这个 xml 字符串的主体DocumentBuilder and Document班级 当我查看返回的 XML 源 在浏览器窗口中看起来很好 而不是 时 它返回 lt and gt 围
  • Git 类似于 Hg 的 Bigfiles 扩展?

    我想要 git 中类似的东西Mercurial 的 Bigfiles 扩展 注 据我所知git 大文件 但这无关 基本上我想在我的 git 存储库中存储大型二进制文件 但我不想在进行克隆时获得大型二进制文件的每个版本 我只想在签出包含这些大
  • 使用 ReferenceEquals 的 IEqualityComparer

    有默认的吗IEqualityComparer
  • 可能有 ``a < b and not(a - b < 0)`` 带浮点数

    Is a lt b and not a b lt 0 由于浮点轮误差可能导致浮点吗 有例子吗 这个答案旨在作为对帕特里夏 沙纳汉已经给出的好答案的学究补充 这个答案涵盖了正常情况 在这里 我们担心的是您在实践中不太可能遇到的边缘情况 是的
  • “phpinfo():依赖系统的时区设置是不安全的......”[重复]

    这个问题在这里已经有答案了 在运行 Blue box FreeSwitch PBX 前端 的 php 安装脚本时 我收到有关时区故障的错误 然后我开始挖掘 我不确定此时发生了什么 但这是我所拥有的 我在 public html 目录中创建了
  • MS Access - 链接到另一个 Access 数据库中的查询

    如何链接来自另一个 MS Access 数据库的查询 我知道我可以轻松链接表格 但我不知道如何链接查询 该查询从许多我不想链接的表中获取数据 你可以这样做 SELECT RemoteQueryname FROM RemoteQuerynam
  • .NET WebClient.UploadValues 与 WebClient.UploadData

    我正在编写一个类库来在我控制之外的站点上执行操作 该网站正在接受表单帖子作为输入 谁能告诉我这两种方法除了上传数据的形式之外是否有区别 System Net WebClient UploadData Uri Byte System Net
  • scanf("%[^\n]s",a) 与 gets(a)

    有人告诉我 当用户输入字符串时不应使用 scanf 相反 大多数专家以及 StackOverflow 上的用户都使用 gets 我从来没有在 StackOverflow 上问过为什么不应该使用 scanf 而不是 gets 来处理字符串 这
  • C++ 循环遍历 Map

    我想迭代中的每个元素map
  • Mono 准备好迎接黄金时段了吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 有人在大型或中型项目中使用过 Mono 开源 NET 实现 吗 我想知道它是否适合现实世界的生产环境 它稳定 快速 兼容 足以使用吗 将项目移植到 Mono 运行时是否需要花费很多精力 或
  • 颤动相机插件

    我对 Flutter 和 Dart 都很陌生 我正在尝试使用相机插件了解事情是如何运作的 我找到的所有示例都有这部分 List
  • Galaxy S5 上的 FOCUS_MODE_CONTINUOUS_PICTURE 出现问题

    我正在开发一个使用相机预览和拍照的 Android 应用程序 我用FOCUS MODE CONTINUOUS PICTURE使用 Galaxy S4 发现对焦效果非常好 然而 在 Galaxy S5 上FOCUS MODE CONTINUO
  • iCarousel 停在用户选择的索引处

    EDIT 我正在制作一个像老虎机一样的应用程序 我补充道iCarousel对于槽对象 所以我有一个按钮可以旋转iCarousel 在我的 iCarousel 视图中 有两个插槽 Slot1 和 Slot2 下面是我的iCarouselVie
  • 使用 mongoose 切换数据库

    您好 有没有办法用 mongoose 切换数据库 我想我可以这样做 mongoose disconnect mongoose connect localhost db 但它不起作用我收到此错误 Error Trying to open un
  • NextJS TypeError:无法读取 null 的属性(读取“长度”)

    有人知道这个错误的原因吗 warn Fast Refresh had to perform a full reload Read more https nextjs org docs basic features fast refresh
  • 如何在 Chrome 上设置音频自动播放

    音频自动播放可以在 Mozilla Microsoft Edge 和旧版 Google Chrome 中使用 但不能在由于自动播放政策发生变化 Google Chrome 67 他们已阻止自动播放 直到满足链接博客文章中指定的特定会话条件
  • 从IP地址获取子网

    我正在尝试获取我拥有的 IP 地址的子网 Eg 1 子网掩码 255 255 255 0 Input 192 178 2 55 输出 192 178 2 0 2 子网掩码 255 255 0 0 Input 192 178 2 55 输出