Python IP處理模塊IPy(轉(zhuǎn)載)

安裝

先下載源碼,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ 朵栖,然后解壓后使用命令python setup.py install安裝责循。

使用

1、顯示IP類型

IP('192.168.1.1').version()
4
IP('::1').version()
6
類似如上所示歌粥,通過version方法可以的判斷輸入的IP是IPv4還是IPv6 。

2拍埠、網(wǎng)段計(jì)算輸出

代碼:

from IPy import IP

ip=IP('192.168.0.0/28')
print ip.len()
for x in ip:
print x

print ip.strNormal(0)
print ip.strNormal(1)
print ip.strNormal(2)
print ip.strNormal(3)
len()方法可以計(jì)算網(wǎng)段的IP個(gè)數(shù)失驶。

strNormal()方法指定不同wantprefixlen參數(shù)可以定制不同類型的輸出。上面輸出類似如下:

16
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
......
192.168.0.15
192.168.0.0
192.168.0.0/28
192.168.0.0/255.255.255.240
192.168.0.0-192.168.0.15
3枣购、格式轉(zhuǎn)換

實(shí)例介紹幾個(gè)常用方法嬉探,包括方向解析名稱、IP類型棉圈、IP進(jìn)制轉(zhuǎn)換涩堤、網(wǎng)絡(luò)地址網(wǎng)段地址轉(zhuǎn)換。

ip=IP('192.168.0.1')
print ip.reverseNames() #反向解析地址格式

print ip.iptype() #顯示IP地址類型分瘾,私有還是公有
ip=IP('8.8.8.8')
print ip.iptype()

print ip.int() #轉(zhuǎn)換成整型格式
print ip.strHex() #轉(zhuǎn)換成十六進(jìn)制格式
print ip.strBin() #轉(zhuǎn)換成二進(jìn)制格式

網(wǎng)絡(luò)地址胎围、網(wǎng)段地址格式轉(zhuǎn)換

print (IP('192.168.1.0').make_net('255.255.255.0'))
print (IP('192.168.1.0/255.255.255.0',make_net=True))
print (IP('192.168.1.0-192.168.1.255',make_net=True))
4、地址比較

判斷IP地址和網(wǎng)段是否包含于另一個(gè)網(wǎng)段中德召,如下:

'192.168.1.1' in IP('192.168.1.0/24')
True
IP('192.168.1.0/24') in IP('192.168.0.0/16')
True
判斷兩個(gè)網(wǎng)段是否存在重疊白魂,如下:

IP('192.168.0.0/23').overlaps('192.168.1.0/24')
1
IP('192.168.1.0/24').overlaps('192.168.2.0')
0
其中1表示存在重疊,0表示不存在重疊上岗。

舉例

代碼:

coding:utf-8

from IPy import IP

ip_s=raw_input("please input an IP or net-range: ")
ips=IP(ip_s)

if len(ips)>1: #網(wǎng)絡(luò)地址
print('net: %s' % ips.net())
print('netmask: %s' % ips.netmask())
print('broadcast: %s' % ips.broadcast())
print('reverse address: %s' % ips.reverseNames()[0])
print('subnet: %s' % len(ips))
else: #單個(gè)地址
print('reverse address: %s' % ips.reverseNames()[0])

print('hexadecimal: %s' % ips.strHex())
print('binary: %s' % ips.strBin())
print('iptype: %s' % ips.iptype())
運(yùn)行結(jié)果:

C:\Users\admin\workspace\zhangnq>python IPy_test2.py
please input an IP or net-range: 192.168.1.1
reverse address: 1.1.168.192.in-addr.arpa.
hexadecimal: 0xc0a80101
binary: 11000000101010000000000100000001
iptype: PRIVATE

C:\Users\admin\workspace\zhangnq>python IPy_test2.py
please input an IP or net-range: 8.8.8.8
reverse address: 8.8.8.8.in-addr.arpa.
hexadecimal: 0x8080808
binary: 00001000000010000000100000001000
iptype: PUBLIC

C:\Users\admin\workspace\zhangnq>python IPy_test2.py
please input an IP or net-range: 192.168.1.0/28
net: 192.168.1.0
netmask: 255.255.255.240
broadcast: 192.168.1.15
reverse address: 0.1.168.192.in-addr.arpa.
subnet: 16
hexadecimal: 0xc0a80100
binary: 11000000101010000000000100000000
iptype: PRIVATE

ipy模塊用法

一個(gè)自動(dòng)識(shí)別IP地址福荸、子網(wǎng)、方向解析肴掷、IP類型等信息的腳本

!/usr/bin/env python

-- coding: utf-8 --

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">def ip():
try:
from IPy import IP ###加載模塊
ip_s = raw_input('請(qǐng)輸入IP地址或者網(wǎng)段地址:' )###輸入一個(gè)IP地址或者網(wǎng)段
ips = IP(ip_s) #定義元素
if len(ips) > 1: #如果len出來的數(shù)字大于1敬锐,那么就是一個(gè)網(wǎng)段
print('網(wǎng)絡(luò)地址: %s' % ips.net())
print('子網(wǎng)掩碼: %s' % ips.netmask())
print('網(wǎng)絡(luò)廣播地址: %s' % ips.reverseNames() [0])
print('網(wǎng)絡(luò)子網(wǎng)數(shù): %s' % len(ips))
else: ###否則就是一個(gè)地址
print('IP反向解析: %s' % ips.reverseNames() [0])
print('十六進(jìn)制地址: %s' % ips.strHex())
print('二進(jìn)制地址: %s' % ips.strBin())
print('地址類型: %s' % ips.iptype())
print time.strftime("%Y-%m-%d %H:%M:%S")
#code
except Exception, e:
logging.info("error:" + str(e) + "\n" + traceback.format_exc())
print traceback.format_exc()
finally:
pass</pre>

運(yùn)行效果:

[root@mylinuxer python]# 192.168.1.0/24
-bash: 192.168.1.0/24: No such file or directory
[root@mylinuxer python]# python python.py
請(qǐng)輸入IP地址或者網(wǎng)段地址: 192.168.1.0/24
網(wǎng)絡(luò)地址: 192.168.1.0
子網(wǎng)掩碼: 255.255.255.0
網(wǎng)絡(luò)廣播地址: 1.168.192.in-addr.arpa.
網(wǎng)絡(luò)子網(wǎng)數(shù): 256

[root@mylinuxer python]# python python.py
請(qǐng)輸入IP地址或者網(wǎng)段地址: 192.168.1.1
IP反向解析: 1.1.168.192.in-addr.arpa.
十六進(jìn)制地址: 0xc0a80101
二進(jìn)制地址: 11000000101010000000000100000001
地址類型: PRIVATE

[root@mylinuxer python]# python python.py
請(qǐng)輸入IP地址或者網(wǎng)段地址: 116.213.249.211
IP反向解析: 211.249.213.116.in-addr.arpa.
十六進(jìn)制地址: 0x74d5f9d3
二進(jìn)制地址: 01110100110101011111100111010011
地址類型: PUBLIC

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呆瞻,隨后出現(xiàn)的幾起案子台夺,更是在濱河造成了極大的恐慌,老刑警劉巖栋烤,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谒养,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)买窟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門丰泊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人始绍,你說我怎么就攤上這事瞳购。” “怎么了亏推?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵学赛,是天一觀的道長。 經(jīng)常有香客問我吞杭,道長盏浇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任芽狗,我火速辦了婚禮绢掰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘童擎。我一直安慰自己滴劲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布顾复。 她就那樣靜靜地躺著班挖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芯砸。 梳的紋絲不亂的頭發(fā)上萧芙,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音乙嘀,去河邊找鬼末购。 笑死,一個(gè)胖子當(dāng)著我的面吹牛虎谢,可吹牛的內(nèi)容都是我干的盟榴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婴噩,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼擎场!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起几莽,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤迅办,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后章蚣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體站欺,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矾策。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磷账。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贾虽,靈堂內(nèi)的尸體忽然破棺而出逃糟,到底是詐尸還是另有隱情,我是刑警寧澤蓬豁,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布绰咽,位于F島的核電站,受9級(jí)特大地震影響地粪,放射性物質(zhì)發(fā)生泄漏取募。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一驶忌、第九天 我趴在偏房一處隱蔽的房頂上張望矛辕。 院中可真熱鬧,春花似錦付魔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陈哑,卻和暖如春妻坝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惊窖。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工刽宪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人界酒。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓圣拄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親毁欣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庇谆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 國際規(guī)定:把所有的IP地址劃分為A,B,C,D,E。 A類地址:范圍從0~127凭疮,0是保留的并且表示所有IP地址饭耳,...
    日風(fēng)和閱讀 21,244評(píng)論 1 8
  • 名詞延伸 通俗的說,域名就相當(dāng)于一個(gè)家庭的門牌號(hào)碼新蟆,別人通過這個(gè)號(hào)碼可以很容易的找到你觅赊。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,602評(píng)論 2 57
  • 1. 使用背景 筆者在出差調(diào)試的過程中,常常會(huì)遇到這樣的情況:需要接入兩個(gè)網(wǎng)絡(luò)栅葡,一個(gè)是部署環(huán)境所在內(nèi)網(wǎng)環(huán)境茉兰,這個(gè)...
    oo水桶oo閱讀 3,937評(píng)論 1 0
  • 0×1.交換機(jī)互連與路由器互連的區(qū)別a.交換機(jī)互連網(wǎng)絡(luò)交換機(jī)工作在OSI參考模型的第二層,完成數(shù)據(jù)幀(Frame)...
    Zero___閱讀 2,183評(píng)論 0 5
  • 鄧寶: 喜歡你三年多啦欣簇,時(shí)間很快规脸。 剛開始認(rèn)識(shí)你是因?yàn)榘嗌弦粋€(gè)同學(xué)喜歡你,天天在空間里發(fā)有關(guān)于你的各種事情和音樂熊咽。...
    曲尚閱讀 645評(píng)論 4 4