您的位置:首页 > 编程语言 > Python开发

写一个简单的python脚本来返回ip地址的掩码,子网个数等

2018-01-19 17:44 225 查看
如果我们想快速得到一个IP地址段有多少个ip,快速得到IP地址段的子网掩码,或者快速得到一个IP地址的二进制,那么可以来学习一下。
本文利用python的一个IP分析模块IPy实现,首先安装IPy模块

wget https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz tar -xf IPy-0.83.tar.gz
cd IPy-0.83
python setup.py install

接下来简单介绍一下功能

>> from IPy import IP
>> ip = IP('192.168.0.0/28')
>> print ip.len() ##输出ip网段的所有ip个数
16
>> for x in ip: ##将所有的ip便利出来
... print x
...
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15

>> IP('192.168.1.1').strBin() ##输出IP地址的二进制
'11000000101010000000000100000001'

>> IP('192.168.0.0/23').netmask() ##输出ip地址段的子网掩码
IP('255.255.254.0')

>> IP('192.168.1.1').iptype() ##输出IP地址的类型公有或者私有等
'PRIVATE'
>> IP('8.8.8.8').iptype()
'PUBLIC'

接下来写一个脚本来根据输入的IP地址返回各种结果:

[root@lsf python]# cat ip_test.py
#!/usr/bin/python
#-*- coding:utf-8 -*-
from IPy import IP
ip_input = raw_input("请输入一个ip地址或者地址段: ")
ips = IP(ip_input)
if int(len(ips)) > 1 :   ##判断IP地址个数,大于1代表输入的是地址段
print "网段: %s" % ips.net()
print "ip个数: %s" % len(ips)
print "子网掩码: %s" % ips.netmask()
print "广播地址: %s" % ips.broadcast()
else :   ##输入的是一个IP地址
print "二进制为: %s" % ips.strBin()
print "地址的类型: %s" % ips.iptype()

测试一下:

输入IP地址测试
[root@lsf python]# python ip_test.py
请输入一个ip地址或者地址段: 192.168.1.1
二进制为: 11000000101010000000000100000001
地址的类型: PRIVATE

输入IP地址段测试
[root@lsf python]# python ip_test.py
请输入一个ip地址或者地址段: 192.168.0.0/23
网段: 192.168.0.0
ip个数: 512
子网掩码: 255.255.254.0
广播地址: 192.168.1.255

关于IP地址处理模块IPy的功能还有很多,大家可根据需要去使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IPy python