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. 【学习笔记】XR872 Audio 驱动框架分析

    Xradio Sdk 的 Audio 驱动框架和 Linux 的 ASOC 驱动框架非常相似,只不过简化了很多. 驱动和芯片之间的关系图 下面的 SOC 表示的是 XR872 芯片,这里以 AC107 ...

  2. Android第五次作业

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  3. ubuntu18.04编译webrtc_android库

    webrtc 是谷歌提供的音视频通讯方案, 能够很好的解决音视频互联互通的场景. 本文基于 Ubuntu 18.04 编译 android 版本的过程, 其它平台也可以参考, 基本都大同小异. 编译环 ...

  4. jquery(二:jquery的DOM操作)

    jquery的Dom操作 查找元素(选择器已实现):创建节点对象:访问和设置节点对象的值,以及属性:添加节点:删除节点:删除.添加.修改.设置节点的css样式等. 操作元素的属性: 方法 说明 举例 ...

  5. JZOJ 2020.07.28【NOIP提高组】模拟

    2020.07.28[NOIP提高组]模拟 考试时状态不好,暴力不想打 结束前勉勉强强骗点分 已经不想说什么了······ \(T1\) 复制&粘贴2 逆推答案,枚举 \(k\),分类讨论 \ ...

  6. 【译】.NET 7 中的性能改进(五)

    原文 | Stephen Toub 翻译 | 郑子铭 循环提升和克隆 (Loop Hoisting and Cloning) 我们之前看到PGO是如何与循环提升和克隆互动的,这些优化也有其他改进. 从 ...

  7. Median String

    You are given two strings ss and tt, both consisting of exactly kk lowercase Latin letters, ss is le ...

  8. 好消息!微信小程序开发环境自带vConsole

    背景介绍 事情是这样子的,我们在开发小程序的时候,需要在真机上把相关的日志打出来以便进行问题定位和回溯,于是在编程界就有个今天这个新闻.------ 好消息!广东某男子发现微信小程序开发环境自带vCo ...

  9. VUE项目Webpack3升级为webpack4总结

    前言: 2018年8月25号webpack4正式发布,webpack4引入了零配置的概念(实际配置下来还是要写不少配置),官方宣传能够提升构建速度 webpack3转webpack4官方说明: htt ...

  10. MapboxGL基础

    1. 概述 Mapbox GL 是一套开源库,用于在 Web.移动和桌面应用程序中嵌入可自定义且响应迅速的客户端地图.Mapbox GL 贴图以高帧速率呈现.缩写"GL"来自行业标 ...