import ipaddress
class Compute: def __init__(self, network):
self.net = network # 功能1: ip子网划分
def ip(self):
with open ("可用ip地址.txt","w") as tmp_file:
pass
ip_list = [] # 空列表存储ip
# 查询ip个数\
net = ipaddress.ip_network(self.net, strict=False) # 已经计算出来该网段的ip数目
for ip in net:
ip_list.append(str(ip))
print("*" * 60)
print("广播地址为:%s \n网络地址为:%s" % (ip_list[0], ip_list[len(ip_list)-1]))
#print("可用地址为:%s-%s\n可用数量为:%d" % (ip_list[1], ip_list[len(ip_list)-2], len(ip_list)-2))
print("网段掩码为:" + str(ipaddress.ip_network(self.net, strict=False).netmask))
print("网段反码为:" + str(ipaddress.ip_network(self.net, strict=False).hostmask))
print("可用地址详情见-----”可用ip地址.txt“")
for i in net.hosts():
with open ("可用ip地址.txt","a") as file:
file.write(str(i) + "\n")
print("*"*60)
def subnet(self,cidr):
self.cidr = cidr
with open ("subnet.txt","w") as tmp_file:
pass
net = ipaddress.ip_network(self.net,strict=False)
#print(net.netmask)
base_subnet = "/" + str(self.cidr)
num_cidr_ipv4 = 2 ** (32 - int(self.cidr))
num_cidr_ipv6 = 2 ** (128 - int(self.cidr))
ip_list = []
version = int(ipaddress.ip_network(self.net,strict=False).version)
if version == 4:
for ip in net:
subnet = str(ip) + base_subnet
ip_list.append(subnet)
for num in range(0,len(ip_list)//num_cidr_ipv4):
with open ("subnet.txt","a",encoding="utf-8") as file:
file.write(ip_list[num_cidr_ipv4*num] + "\n")
else:
for ip in net:
subnet = str(ip) + base_subnet
ip_list.append(subnet)
for num in range(0,len(ip_list)//num_cidr_ipv6):
with open ("subnet.txt","a",encoding="utf-8") as file:
file.write(ip_list[num_cidr_ipv6*num] + "\n")
while True:
try :
ip = Compute(input("请输入要查询ip地址段:\n"))
ip.ip() # 输出网段相关信息
choose = input("是否进行子网划,是请按1,否请按任意键")
while choose == "1":
try:
ip.subnet(input("请输入要划分的子网id:例如:30\n"))# 输入要划分的子网
print("子网详情见subnet.txt")
break
except ValueError:
print("子网id错误,请重新输入")
except ValueError:
print("ip地址错误,请重新输入")

python_子网划分计算器的更多相关文章

  1. 【Linux网络基础】网络子网划分基础知识(IP地址,子网)

    一. IP地址分类与子网划分基础 1. 什么是IP地址? 常见的ip地址版本为ipv4, ipv6 32位 4 * 8=32位. 32位二进制数字序列组成的数字序列   点分十进制 采用点将32位数字 ...

  2. IP地址及其子网划分

    说实话,弄到子网划分的时候还是及其头晕的,又是这又是那的,现在我们来讲解一下这些东西, 首先我们来介绍一下IP地址,要弄清子网划分,子网掩码首先还是要弄清IP地址的划分 IP地址是给Internet上 ...

  3. CCNA第三章子网划分,变长子网掩码(VLSM)和TCP/IP排错考试要点学习笔记

    1. 子网划分的好处      缩减网络流量; 优化网络性能; 简化管理; 可以更为灵活地形成大覆盖范围的网络.    2. 如何创建子网的步骤 首先,确认所需要的网络ID数; 其次,确认每个子网中所 ...

  4. CCNA基础 IP地址子网划分

    计算机是一个非常神奇的物品,它的核心算法是凌驾于任何代码架构.然而互联网网络( Internat )作为整个生态的基础资源.什么?你还不会子网划分? 没关系,看到子网掩码不要怕.因为它无非就是问你 & ...

  5. 网络基础之IP地址与子网划分

    IP地址 Ipv4地址格式:点分十进制 IP地址的分类 A类 B类 C类: D类:组播 E类: 公共IP地址 私有IP地址 特殊地址 保留地址 子网掩码 什么是子网掩码 CIDR表示法 子网划分 为啥 ...

  6. 第5章 子网划分和CIDR

    第5章 子网划分和CIDR 划分网络 根据A类.B类或C类网络ID来识别网段具有一些局限性,主要是在网络级别之下不能对地址空间进行任何逻辑细分 如果一个IP是一个A类网络.数据报到达网关,然后传输到9 ...

  7. 网络学习day04_VLSM、子网划分

    IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...

  8. IP地址子网划分

    广播数据包: 要弄清为何需要划分子网,就需要了解网络传输过程中的广播概念. 经过多年的发展,交换机基本替代集线器,成为网络中主要的端终接入网络的基础设备,这也使得广播包发送数量有明显的减少,但交换机一 ...

  9. 【转载】IP地址和子网划分学习笔记之《子网掩码详解》

    原文地址: https://blog.51cto.com/6930123/2112748 一.子网掩码 IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相 ...

  10. 【网络】IP子网划分详解

    1.IP地址组成                                IP地址组成示意图 IP地址由32位二进制组成,32位二进制分成了4字节,每字节8位,字节之间用符.(点)分隔,为了方便 ...

随机推荐

  1. Docker使用阿里云拉取配置源也无法拉取的镜像-github镜像镜像gcr.io

    我搞了一天都没搞好,最后用了这个办法解决了拉取镜像的问题 对于大部分镜像来说,我们配置源就可以,但是对于较新的镜像,没得搞啊,铁子们,真的崩溃... 最终发现可以通过Aliyun的自动构建来处理被墙镜 ...

  2. 在Typescript项目中,使用ESLint和Prettier,以及解决保存代码后ESLint配置冲突问题

    首先,检查项目中根目录.eslintrc.js文件,该文件中定义了ESLint的基础配置,找到其中的rules 例如: const prettierConfig = require('./.prett ...

  3. 视图,触发器,存储过程,流程控制等MySQL小知识点

    视图,触发器,存储过程,流程控制等MySQL小知识点 一.SQL注入问题 登录: import pymysql conn = pymysql.connect( host='127.0.0.1', po ...

  4. epoll分布式通讯

    参考http://www.xmailserver.org/linux-patches/nio-improve.html  epoll通讯 参考https://blog.csdn.net/yangqua ...

  5. ubuntu下yaml-cpp安装与使用

    安装 从GitHub上下载源码编译安装:git clone https://github.com/jbeder/yaml-cpp.git: 进入源码目录并创建一个 build 目录:cd yaml-c ...

  6. Dubbo-RPC核心接口介绍

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  7. 文盘Rust -- rust 连接云上数仓 starwift

    作者:京东云 贾世闻 最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番. ...

  8. wsl2 使用串口/usb

    wsl2串口 搜了几个方案,都不合适 网上很多人说wsl可以直接使用win的串口,com* 就对应 /dev/ttyS* 实际上这是wsl1的,wsl2官方明确表示不支持了 CH340 介绍 CH34 ...

  9. Seal 0.4 发布:软件供应链安全洞察更上一层楼!

    今天,我们很高兴宣布 Seal 0.4 已正式发布!在上一个版本中,Seal 完成了从单一产品到全链路平台的转变,通过全局视图帮助用户掌握软件开发生命周期各个环节的安全状况. 在 Seal 0.4 中 ...

  10. P2_小程序简介

    小程序与普通网页开发的区别 运行环境不同 网页运行在浏览器环境中 小程序运行在微信环境中 API 不同 由于运行环境的不同,所以小程序中,无法调用 DOM 和 BOM 的 API. 但是,小程序中可以 ...