标签:类型 test pre 一个 rom pack pytho 0.12 ipy
如果我们想快速得到一个IP地址段有多少个ip,快速得到IP地址段的子网掩码,或者快速得到一个IP地址的二进制,那么可以来学习一下。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的功能还有很多,大家可根据需要去使用。
写一个简单的python脚本来返回ip地址的掩码,子网个数等
标签:类型 test pre 一个 rom pack pytho 0.12 ipy
原文地址:http://blog.51cto.com/lsfandlinux/2062959