Python之IPy

IPy

簡介:IPy-用于處理IPv4和IPv6地址和網(wǎng)絡(luò)的類和工具。

網(wǎng)址: https://github.com/autocracy/python-ipy/

API介紹:

IP類允許一個舒適的解析并處理大多數(shù)用于IPv4和IPv6地址和網(wǎng)絡(luò)的符號烫堤。它受到RIPE的Perl模塊NET :: IP界面的極大啟發(fā)欺劳,但不共享實現(xiàn)闸迷。它不共享非CIDR網(wǎng)絡(luò)掩碼晤斩,所以像這樣的時髦網(wǎng)絡(luò)掩碼0xffffff0f無法在這里完成。

安裝

[root@localhost ~]# pip3 install IPy
Collecting IPy
  Downloading https://files.pythonhosted.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz
Installing collected packages: IPy
  Running setup.py install for IPy ... done
Successfully installed IPy-0.83

IP地址網(wǎng)段處理

IPy模塊包含IP類,使用它可以方便處理絕大部分格式為IPv6及IPv4的網(wǎng)絡(luò)和地址僧家。比如通過version方法可以區(qū)分IPv4與IPv6

示例

import IPy
IPy.IP('10.0.0.0/8').version() # 4

IPy.IP('::1').version() # 6

通過指定的網(wǎng)段輸出該網(wǎng)段的IP個數(shù)及所有IP地址清單

示例

from IPy import IP
ip=IP('192.168.1.0/24')
ip.len() # 256 #輸出192.168.1.0/24網(wǎng)段的IP個數(shù)

for x in ip:    #輸出192.168.1.0/24網(wǎng)段的所有IP清單
    print x
  
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3

IP類的幾個常見的方法,包括反向解析名稱裸删、IP類型八拱、IP轉(zhuǎn)換等

from IPy import IP
ip = IP('192.168.121.1')

ip.reverseNames()   #反向解析地址格式
['1.121.168.192.in-addr.arpa.']

ip.iptype()        #192.168.121.1為私網(wǎng)類型'PRIVATE'
'PRIVATE'

IP('8.8.8.8').iptype()        #8.8.8.8為公網(wǎng)類型
'PUBLIC'

IP('8.8.8.8').int()              #轉(zhuǎn)換成整型格式
134744072

IP('8.8.8.8').strHex()           #轉(zhuǎn)換成十六進(jìn)制格式
'0x8080808'

IP('8.8.8.8').strBin()            #轉(zhuǎn)換成二進(jìn)制格式
'00001000000010000000100000001000'

print(IP(0x8080808))            #十六進(jìn)制轉(zhuǎn)成IP格式
8.8.8.8

IP方法也支持網(wǎng)絡(luò)地址的轉(zhuǎn)換,例如根據(jù)IP與掩碼生成網(wǎng)段格式涯塔,示例:

from IPy import IP
IP('192.168.1.0').make_net('255.255.255.0')
IP('192.168.1.0/24')

IP('192.168.1.0/255.255.255.0',make_net=True)
IP('192.168.1.0/24')

IP('192.168.1.0-192.168.1.255',make_net=True)
IP('192.168.1.0/24')

也可以通過strNormal方法指定不同wantprefixlen參數(shù)值以定制不同輸出類型的網(wǎng)段肌稻。輸出類型為字符串,如下:

wantprefixlen的取值及含義:

wantprefixlen=0,五返回匕荸,如192.168.1.0;

wantprefixlen=1,prefix格式爹谭,如192.168.1.0/24;

wantprefixlen=2,decimalnetmask格式,如192.168.1.0/255.255.255.0;

wantprefixlen=3,lastIP格式榛搔,如192.168.1.0-192.168.1.255诺凡。

from IPy import IP
IP('192.168.1.0/24').strNormal(0)
'192.168.1.0'

IP('192.168.1.0/24').strNormal(1)
'192.168.1.0/24'

IP('192.168.1.0/24').strNormal(2)
'192.168.1.0/255.255.255.0'

IP('192.168.1.0/24').strNormal(3)
'192.168.1.0-192.168.1.255'

判斷IP地址是否在該網(wǎng)絡(luò)內(nèi)

'192.168.13.249' in IP('192.168.0.0/24') # False
'192.168.13.249' in IP('192.168.0.0/16') # True

示例

# coding=utf-8

from IPy import IP

# 輸入ip地址
ip_input = raw_input('Input ip address: ')
ip_address = IP(ip_input)

if len(ip_address) > 1: # 如果長度大于1,表示為網(wǎng)絡(luò)號,非具體的IP地址
        print ip_address.net()
        print ip_address.broadcast()
        print ip_address.netmask()
else:
        # 當(dāng)輸入的為IP地址的時候
        print ip_address
        print ip_address.strBin()
        
# 輸出
Input ip address: 192.168.8.70
192.168.8.70
11000000101010000000100001000110
# 輸入
Input ip address: 192.168.8.0/24
192.168.8.0
192.168.8.255
255.255.255.0

判斷是否是共有地址或者私有地址

#coding=utf-8

from IPy import IP

ip_input = raw_input("Input IP address:")
ip_address = IP(ip_input)
print ip_address.iptype()


Input IP address:192.168.9.7
PRIVATE
[root@shell auto]# python public_ip.py 
Input IP address:10.0.0.8
PRIVATE
[root@shell auto]# python public_ip.py 
Input IP address:123.1.2.3
PUBLIC
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末齿风,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绑洛,更是在濱河造成了極大的恐慌救斑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件真屯,死亡現(xiàn)場離奇詭異脸候,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绑蔫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門运沦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人配深,你說我怎么就攤上這事携添。” “怎么了篓叶?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵烈掠,是天一觀的道長。 經(jīng)常有香客問我缸托,道長左敌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任俐镐,我火速辦了婚禮矫限,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佩抹。我一直安慰自己叼风,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布棍苹。 她就那樣靜靜地躺著无宿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪廊勃。 梳的紋絲不亂的頭發(fā)上懈贺,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音坡垫,去河邊找鬼梭灿。 笑死,一個胖子當(dāng)著我的面吹牛冰悠,可吹牛的內(nèi)容都是我干的堡妒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溉卓,長吁一口氣:“原來是場噩夢啊……” “哼皮迟!你這毒婦竟也來了搬泥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伏尼,失蹤者是張志新(化名)和其女友劉穎忿檩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爆阶,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡燥透,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辨图。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片班套。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖故河,靈堂內(nèi)的尸體忽然破棺而出吱韭,到底是詐尸還是另有隱情,我是刑警寧澤鱼的,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布理盆,位于F島的核電站,受9級特大地震影響鸳吸,放射性物質(zhì)發(fā)生泄漏熏挎。R本人自食惡果不足惜速勇,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一晌砾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烦磁,春花似錦养匈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陨晶,卻和暖如春猬仁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背先誉。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工湿刽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褐耳。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓诈闺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铃芦。 傳聞我的和親對象是個殘疾皇子雅镊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容