Python中IP地址處理IPy模塊的方法
安裝
先下載源碼,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然后解壓后使用命令python setup.py install安裝。
使用
1、顯示IP類(lèi)型
>>> IP('192.168.1.1').version()
4
>>> IP('::1').version()
6
類(lèi)似如上所示,通過(guò)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ù)可以定制不同類(lèi)型的輸出。上面輸出類(lèi)似如下:
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è)常用方法,包括方向解析名稱(chēng)、IP類(lèi)型、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地址類(lèi)型,私有還是公有
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類(lèi)型等信息的腳本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
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出來(lái)的數(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('地址類(lèi)型: %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
運(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 地址類(lèi)型: 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 地址類(lèi)型: PUBLIC
總結(jié)
以上所述是小編給大家介紹的Python中IP地址處理IPy模塊的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- 用python查找統(tǒng)一局域網(wǎng)下ip對(duì)應(yīng)的mac地址
- Python3獲取電腦IP、主機(jī)名、Mac地址的方法示例
- python獲取本機(jī)mac地址和ip地址的方法
- python生成隨機(jī)mac地址的方法
- Python生成隨機(jī)MAC地址
- python通過(guò)scapy獲取局域網(wǎng)所有主機(jī)mac地址示例
- python3判斷IP地址的方法
- python IP地址轉(zhuǎn)整數(shù)
- python 輸入字符串生成所有有效的IP地址(LeetCode 93號(hào)題)
- 基于python實(shí)現(xiàn)查詢(xún)ip地址來(lái)源
- python如何判斷IP地址合法性
- 如何用Python獲取計(jì)算機(jī)名,ip地址,mac地址
相關(guān)文章
詳解Python的Django框架中Manager方法的使用
這篇文章主要介紹了Python的Django框架中Manager方法的使用,包括修改初始Manager QuerySets和增加額外的Manager方法等操作,需要的朋友可以參考下2015-07-07
Python torch.flatten()函數(shù)案例詳解
這篇文章主要介紹了Python torch.flatten()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Python包中__init__.py文件的作用與用法實(shí)例詳解
我們新建python包時(shí)常常會(huì)看到一個(gè)__init _.py文件,下面這篇文章主要給大家介紹了關(guān)于Python包中__init__.py文件的作用與用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Python使用FastParquet庫(kù)處理Parquet文件的方法
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)存儲(chǔ)和處理的效率至關(guān)重要,Parquet作為一種列式存儲(chǔ)格式,因其高效的壓縮和編碼方案,成為大數(shù)據(jù)處理中的熱門(mén)選擇,本文將深入探討FastParquet庫(kù)的使用,幫助讀者掌握如何利用這一工具高效處理Parquet文件,需要的朋友可以參考下2025-02-02
使用Pandas實(shí)現(xiàn)高效讀取篩選csv數(shù)據(jù)
在數(shù)據(jù)分析和數(shù)據(jù)科學(xué)領(lǐng)域中,Pandas?是?Python?中最常用的庫(kù)之一,本文將介紹如何使用?Pandas?來(lái)讀取和處理?CSV?格式的數(shù)據(jù)文件,希望對(duì)大家有所幫助2024-04-04
python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞
這篇文章主要介紹了python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞,下面通過(guò)一個(gè)小案例來(lái)簡(jiǎn)單的理解什么是裝飾器,需要的小伙伴可以參考一下2022-03-03
python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作
這篇文章主要介紹了python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Pycharm中使用git進(jìn)行合作開(kāi)發(fā)的教程詳解
這篇文章主要介紹了Pycharm中使用git進(jìn)行合作開(kāi)發(fā),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

