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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个简单的python脚本来返回ip地址的掩码,子网个数等相关的知识,希望对你有一定的参考价值。

如果我们想快速得到一个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地址返回各种结果:

[[email protected] 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地址测试
[[email protected] python]# python ip_test.py 
请输入一个ip地址或者地址段: 192.168.1.1
二进制为: 11000000101010000000000100000001
地址的类型: PRIVATE

输入IP地址段测试
[[email protected] 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地址的掩码,子网个数等的主要内容,如果未能解决你的问题,请参考以下文章

想写个shell脚本来自动配置ip,子网掩码和网关

Uva1590

对于IP地址,怎样区分主机ID和网络ID

如何用python脚本获取ip,掩码,地址,网段

有没有办法根据编译时未知的掩码长度来掩码 __m128i 寄存器的一端?

识别有效的IP地址和掩码并进行分类统计