1. 程式人生 > >寫一個簡單的python腳本來返回ip地址的掩碼,子網個數等

寫一個簡單的python腳本來返回ip地址的掩碼,子網個數等

pypi package 多少 ask pri 1.2 bfc pty rom

如果我們想快速得到一個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的功能還有很多,大家可根據需要去使用。

寫一個簡單的python腳本來返回ip地址的掩碼,子網個數等