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. 读Java8函数式编程笔记02_流

    1. 外部迭代 1.1. for循环是一个封装了迭代的语法糖 1.1.1. 本质上来讲是一种串行化操作 1.2. 很难抽象出不同操作 2. 内部迭代 2.1. 内部迭代中的相应接口:Stream 2. ...

  2. 【随笔记】NDK 编译开源库 jsoncpp

    下载并解压源码 wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.4.tar.gz -O jsoncp ...

  3. Java JDK1.5: 泛型 新特性的讲解说明

    Java JDK1.5: 泛型 新特性的讲解说明 每博一文案 听到过这样一句话:"三观没有标准.在乌鸦的世界里,天鹅也有罪." 环境.阅历的不同,造就了每个人独有的世界观.人生观. ...

  4. immutable.js学习笔记(六)----- OrderedSet

    一.OrderedSet 二.普通Set 与 OrderedSet 注意:普通Set并不是严格的一定是升序的 三.takeWhile 四.升序 sort valueA - valueB 五.降序 va ...

  5. Spring AOP与AspectJ的对比及应用

    1 简介 AOP,即面向切面编程是很常用的技术,特别是在Java Web开发中.而最流行的AOP框架分别是Spring AOP和AspectJ. 2 Spring AOP vs AspectJ Spr ...

  6. MySQL中的函数使用

    有三张表,学生表(t_student),班级表(t_class),成绩表(t_grade),三张表的字段设计如下                                        查询大竹 ...

  7. 学习Java Day19

    今天学习了包(package)将类组织在一个集合里,知道了如何导入类.

  8. NetCore使用ZipFile 和ZipOutputStream

    一.序言 环境:NetCore 3.1 项目类型:Web 二.使用ZipFile压缩本地文件 var filePath = Directory.GetCurrentDirectory() + $@&q ...

  9. Spring(Ioc DI、Spring的继承-依赖)

    IoC Di Di 指的是bean之间的依赖注入,设置对象之间的级联关系 Classes: package com.southwind.entity; import lombok.Data; @Dat ...

  10. ES6的Promise用法

    一.是什么: promise是异步编程的一种解决方案,它是一个对象,可以获取异步操作的信息,它的出现改善了异步编程,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大 二.promise的 ...