Python中IP地址處理IPy模塊的方法
安裝
先下載源碼,地址: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)段計算輸出
代碼:
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()方法可以計算網(wǎng)段的IP個數(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)換
實例介紹幾個常用方法,包括方向解析名稱、IP類型、IP進制轉(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)換成十六進制格式 print ip.strBin() #轉(zhuǎ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)段是否包含于另一個網(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
判斷兩個網(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: #單個地址 print('reverse address: %s' % ips.reverseNames()[0]) print('hexadecimal: %s' % ips.strHex()) print('binary: %s' % ips.strBin()) print('iptype: %s' % ips.iptype())
運行結(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模塊用法
一個自動識別IP地址、子網(wǎng)、方向解析、IP類型等信息的腳本
#!/usr/bin/env python # -*- coding: utf-8 -*- def ip(): try: from IPy import IP ###加載模塊 ip_s = raw_input('請輸入IP地址或者網(wǎng)段地址:' )###輸入一個IP地址或者網(wǎng)段 ips = IP(ip_s) #定義元素 if len(ips) > 1: #如果len出來的數(shù)字大于1,那么就是一個網(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: ###否則就是一個地址 print('IP反向解析: %s' % ips.reverseNames() [0]) print('十六進制地址: %s' % ips.strHex()) print('二進制地址: %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
運行效果:
[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 請輸入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 請輸入IP地址或者網(wǎng)段地址: 192.168.1.1 IP反向解析: 1.1.168.192.in-addr.arpa. 十六進制地址: 0xc0a80101 二進制地址: 11000000101010000000000100000001 地址類型: PRIVATE [root@mylinuxer python]# python python.py 請輸入IP地址或者網(wǎng)段地址: 116.213.249.211 IP反向解析: 211.249.213.116.in-addr.arpa. 十六進制地址: 0x74d5f9d3 二進制地址: 01110100110101011111100111010011 地址類型: PUBLIC
總結(jié)
以上所述是小編給大家介紹的Python中IP地址處理IPy模塊的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
- 用python查找統(tǒng)一局域網(wǎng)下ip對應(yīng)的mac地址
- Python3獲取電腦IP、主機名、Mac地址的方法示例
- python獲取本機mac地址和ip地址的方法
- python生成隨機mac地址的方法
- Python生成隨機MAC地址
- python通過scapy獲取局域網(wǎng)所有主機mac地址示例
- python3判斷IP地址的方法
- python IP地址轉(zhuǎn)整數(shù)
- python 輸入字符串生成所有有效的IP地址(LeetCode 93號題)
- 基于python實現(xiàn)查詢ip地址來源
- python如何判斷IP地址合法性
- 如何用Python獲取計算機名,ip地址,mac地址
相關(guān)文章
Python文件操作指南解鎖三個txt文件合并技術(shù)
本文將深入介紹如何利用Python編寫腳本,將三個文本文件中指定的列數(shù)據(jù)合并成一個新文件,通過豐富的示例代碼和詳細解釋,幫助掌握這一實用而靈活的數(shù)據(jù)處理技巧2024-01-01Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù)詳解
Python3對函數(shù)參數(shù)的排序規(guī)則更加通用化了,即Python3 keyword-only參數(shù),該參數(shù)即為必須只按照關(guān)鍵字傳遞而不會有一個位置參數(shù)來填充的參數(shù)。這篇文章主要介紹了Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù),需要的朋友可以參考下2019-06-06Python?pydash庫處理大規(guī)模數(shù)據(jù)集執(zhí)行復(fù)雜操作
在數(shù)據(jù)處理和分析領(lǐng)域,Python一直是一種強大的編程語言,然而,在處理大規(guī)模數(shù)據(jù)集和執(zhí)行復(fù)雜操作時,有時候需要更高效的工具,在本文中,我們將深入探討pydash庫,這是一個專注于提高Python代碼性能的工具2023-12-12python openvc 裁剪、剪切圖片 提取圖片的行和列
這篇文章主要介紹了python openvc 裁剪、剪切圖片 提取圖片的行和列,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09詳解使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件
這篇文章主要介紹了詳解使用PyInstaller將Pygame庫編寫的小游戲程序打包為exe文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08