一、模块简介:
IPy这个强大的Python第三方包,主要提供了包括网段、网络掩码、广播地址、子网数、IP类型的处理等等功能。
安装:
pip3 install IPy
检测方法:
二、基本信息:
目标:
通过IPy的学习,获取ip和网段的基本信息。
方法:
识别ip分类 version() 获取ip数量 len()
扩展:
ip分类: ipv4: 样式:192.168.1.1 四部分数字组成,0-9,值的范围是0~255 ipv6 样式:00:00:00:00:00:00 六部分组成,0-9,a-f
简单实践:
1.识别IP分类
1.1 IPv4的演示
ip_content = '192.168.242.130/32' ip_result = IP(ip_content).version() print("{} 的ip类型是:IPv{}".format(ip_content,ip_result))
1.2 IPv6的演示
ip_content = 'fe80::124:5bff:fc2b:619f' ip_result = IP(ip_content).version() print("{} 的ip类型是:IPv{}".format(ip_content,ip_result))
2.获取ip数量
#2.1定义网段 ip_range = IP('192.168.1.0/30') #2.2获取ip数量 print("{} 网段有{} 个ip".format(ip_range,ip_range.len())) #2.3 查询所有的ip for i in ip_range: print(i)
三、基本操作:
目标:
通过IPy的学习,了解ip操作的常见方式。
基本语法:
反向解析: reversnNames() ip类型: iptype() ip转换 转换成整型 int() 转换成十六进制 strHex() 转换成二进制 strBin() 十六进制转换成ip地址 IP()
扩展:
举例:www.baidu.com ---- 36.152.44.95 正向解析: 通过域名找到对应的ip地址 反向解析: 根据ip地址,找到对应的网站域名
简单实践:
1.反向域名解析
#获取Ip相关信息 #导包 import IPy from IPy import IP #1.反向解析名称 #1.1定制ip地址 my_ip = IP('36.152.44.95') #1.2获取定制域名 name = my_ip.reverseNames() print("{} 的域名名称是:{}".format(my_ip,name))
2.获取ip类型
#2.ip类型 #2.1地址ip地址 my_ip1 = IP('36.152.44.95') #PUBLIC类型公网 my_ip2 = IP('192.168.1.1') #PRIVATE类型私网 #2.2获取ip类型 name1 = my_ip1.iptype() name2 = my_ip2.iptype() print("{} 的类型是{}".format(my_ip1,name1)) print("{} 的类型是{}".format(my_ip2,name2))
3.ip转换
#3.ip转换 #3.1定制ip地址 my_ip = IP('36.152.44.95') #3.2 转换类型 int_result = my_ip.int() print("{} 的转换成整型{}".format(my_ip,int_result)) hex_result = my_ip.strHex() print("{} 的转换成十六进制{}".format(my_ip,hex_result)) bin_result = my_ip.strBin() print("{} 的转换成二进制{}".format(my_ip,bin_result))
#3.3 ip地址反转换 hex_address = '0x24982c5f' ip_result = IP(hex_address) print("{}的转换成ip类型{}".format(hex_address,ip_result)) bin_address = '00100100100110000010110001011111' #注意:IP接收的内容不能是非十六进制IP地址 ip_result1 = IP(bin_address) print("{}的转换成ip类型{}".format(hex_address,ip_result1))
四、网段转换
扩展:
ip的表现样式: 样式1 ip/掩码数字 192.168.1.1/24 样式2 ip 掩码地址 192.168.1.1 255.255.255.0
格式:
格式: IP(‘ip地址’).make_net(‘掩码地址’) IP('ip地址段'),make_net=True)
简单实践:
网段的常见操作 #导包 from IPy import IP #1.网段地址转换 #1.1转换样式1 ip_net = '192.168.1.0' ip_result = IP(ip_net).make_net('255.255.255.0') print("{} 转换后的样式 {}".format(ip_net,ip_result)) #1.2转换样式2 ip_net2 = '192.168.1.0/255.255.255.0' ip_result2 = IP(ip_net2,make_net=True) print("{} 转换后的样式 {}".format(ip_net2,ip_result2)) #1.3转换样式3 ip_net3 = '192.168.1.0-192.168.1.255' ip_result3 = IP(ip_net3,make_net=True) print("{} 转换后的样式 {}".format(ip_net3,ip_result3))