PythonIP處理模組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、網段計算輸出
程式碼:
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()方法可以計算網段的IP個數。
strNormal()方法指定不同wantprefixlen引數可以定製不同型別的輸出。上面輸出類似如下:
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、格式轉換
例項介紹幾個常用方法,包括方向解析名稱、IP型別、IP進位制轉換、網路地址網段地址轉換。
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() #轉換成整型格式
print ip.strHex() #轉換成十六進位制格式
print ip.strBin() #轉換成二進位制格式
網路地址、網段地址格式轉換
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地址和網段是否包含於另一個網段中,如下:
`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
判斷兩個網段是否存在重疊,如下:
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: #網路地址
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())
執行結果:
C:Usersadminworkspacezhangnq>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:Usersadminworkspacezhangnq>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:Usersadminworkspacezhangnq>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地址、子網、方向解析、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(`請輸入IP地址或者網段地址:` )###輸入一個IP地址或者網段
ips = IP(ip_s) #定義元素
if len(ips) > 1: #如果len出來的數字大於1,那麼就是一個網段
print(`網路地址: %s` % ips.net())
print(`子網掩碼: %s` % ips.netmask())
print(`網路廣播地址: %s` % ips.reverseNames() [0])
print(`網路子網數: %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) + ”
” + traceback.format_exc())
print traceback.format_exc()
finally:
pass</pre>
執行效果:
[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地址或者網段地址: 192.168.1.0/24
網路地址: 192.168.1.0
子網掩碼: 255.255.255.0
網路廣播地址: 1.168.192.in-addr.arpa.
網路子網數: 256
[root@mylinuxer python]# python python.py
請輸入IP地址或者網段地址: 192.168.1.1
IP反向解析: 1.1.168.192.in-addr.arpa.
十六進位制地址: 0xc0a80101
二進位制地址: 11000000101010000000000100000001
地址型別: PRIVATE
[root@mylinuxer python]# python python.py
請輸入IP地址或者網段地址: 116.213.249.211
IP反向解析: 211.249.213.116.in-addr.arpa.
十六進位制地址: 0x74d5f9d3
二進位制地址: 01110100110101011111100111010011
地址型別: PUBLIC
相關文章
- Python自動化運維之IPy模組Python運維
- 【轉載】SHELL字串處理技巧(${}、##、%%)字串
- 衝突處理的方法(轉載)
- CPA十三--會計處理(轉載)
- hbase 故障的處理方案。 (轉載文章)
- [轉載] Java異常處理習題Java
- 批處理中的for詳解(轉載)
- 轉載:Java處理高併發量訪問的處理總結Java
- 批處理 自動修改 IP 地址(轉載)
- 環境不確定因素處理(轉載)
- Linux核心模組程式設計--中斷處理程式(轉)Linux程式設計
- 常用模組 PHP 錯誤處理PHP
- JSP(12) - 商品處理模組JS
- 【轉載】Selenium 處理頁面的等待時間
- maven模組互相依賴打包處理Maven
- latch: cache buffers chains故障處理總結(轉載)AI
- 轉載ORA-01591錯誤故障處理
- [轉載]Oracle 事務處理的完整流程分析Oracle
- 勞動爭議處理的基本原則(轉載)
- CPA六--無形資產的賬務處理(轉載)
- CPA十七--涉及補價的會計處理(轉載)
- CPA十四--或有事項的會計處理(轉載)
- CPA十二--期末匯兌損益的處理(轉載)
- CommonJS和ES6模組迴圈載入處理的區別JS
- Python 模組的一般處理Python
- 轉載ORA-01591錯誤故障處理(ji)
- Cocoa Touch事件處理流程--響應者鏈(轉載)事件
- CPA二十--關聯方交易的會計處理(轉載)
- CPA十九--調整事項的帳務處理(轉載)
- CPA十七--不涉及補價的會計處理(轉載)
- CPA十六--債務重組的會計處理(轉載)
- CPA十二--主要外幣業務的會計處理(轉載)
- 異常處理 (轉)
- CPA十五--售後租回承租人的處理(轉載)
- CPA十二--賬戶設定及會計處理程式(轉載)
- ibatis--Null處理(轉載,不一定有效)BATNull
- Node.js 如何處理 ES6 模組Node.js
- pip安裝模組超時怎麼處理