1. 程式人生 > >Python之實用的IP地址處理模組IPy

Python之實用的IP地址處理模組IPy

實用的IP地址處理模組IPy

在IP地址規劃中,涉及到計算大量的IP地址,包括網段、網路掩碼、廣播地址、子網數、IP型別等

別擔心,Ipy模組拯救你。Ipy模組可以很好的輔助我們高效的完成IP的規劃工作。

原始碼方式安裝Ipy模組

$ wget https://pypi.python.org/packages/source/I/IPy/IPy-0.81.tar.gz --no-check-certificate
$ tar zxvf IPy-0.81.tar.gz
$ cd IPy-0.81/
$ sudo python setup.py install

IP地址、網段的基本處理

  1. IPy模組包含IP類,使用它可以方便處理絕大部分格式為IPv6的網路和地址

    比如通過version方法來區分出IPv4和IPv6

    >>> import IPy
    >>> IPy.IP('10.0.0.0/8').version()
    4
    >>> IPy.IP('::1').version()
    6
  2. 通過指定的網段輸出該網段的IP個數和所有的IP地址清單

    如下:

    $ more ip.py 
    #!/usr/bin/env python
    import IPy
    
    ip = IPy.IP('192.168.0.0/16')
    print ip.len()
    for x in ip:
        print x
  3. 反向解析名稱、IP型別、IP轉換等

    >>> ip = IP('192.168.1.20')
    >>> ip.reverseNames()               #反向解析地址格式
    ['20.1.168.192.in-addr.arpa.']
    >>> ip.iptype()                     #私網型別
    'PRIVATE'
    >>> IP('8.8.8.8').iptype()          #公網型別
    'PUBLIC'
    >>> IP('8.8.8.8').int()             #轉換為整型格式
    134744072
    >>> IP('8.8.8.8').strHex()          #轉換為十六進位制格式
    '0x8080808'
    >>> IP('8.8.8.8').strBin()          #轉換成二進位制格式
    '00001000000010000000100000001000'
    >>> print IP('0x8080808')           #十六進位制轉換為IP格式
    8.8.8.8
    >>> print IP(134744072)             #整型格式轉換為IP格式
    8.8.8.8
  4. IP方法也支援網路地址的轉換,例如根據IP和掩碼產生網段格式

    >>> print (IP('192.168.1.0').make_net('255.255.255.0'))
    192.168.1.0/24
    >>> print (IP('192.168.1.0/255.255.255.0',make_net=True))
    192.168.1.0/24
    >>> print (IP('192.168.1.0-192.168.1.255',make_net=True))
    192.168.1.0/24
  5. 通過strNormal方法指定不同wantprefixlen引數值以定製不同輸出型別的網段,輸出型別為字串

    >>> IP('192.168.1.0/24').strNormal(0)   #無返回
    '192.168.1.0'
    >>> IP('192.168.1.0/24').strNormal(1)   #prefix格式
    '192.168.1.0/24'
    >>> IP('192.168.1.0/24').strNormal(2)   #decimalnetmask格式
    '192.168.1.0/255.255.255.0'
    >>> IP('192.168.1.0/24').strNormal(3)   #lastIP格式
    '192.168.1.0-192.168.1.255'

多網路計算方法詳解

比較兩個網段是否存在包含、重疊等關係,比如同網路但不同prefixlen會認為是不相等的網段,如10.0.0.0/16不等於10.0.0.0/24,另外即使具有相同的prefixlen但處於不同的網路地址,同樣也視為不相等,如10.0.0.0/16不等於192.0.0.0/16。IPy支援類似於數值型資料的比較,以幫助IP物件進行比較。

  1. 比較IP大小

    >>> IP('10.0.0.0/24') < IP('12.0.0.0/24')
    True
  2. 判斷IP地址和網段是否包含於另一個網段中

    >>> '192.168.1.100' in IP('192.168.1.0/24')
    True
    >>> IP('192.168.1.0/24') in IP('192.168.0.0/16')
    True
  3. 判斷兩個網段是否存在重疊(overlaps方法)

    >>> IP('192.168.0.0/23').overlaps('192.168.1.0/24')
    1
    >>> IP('192.168.1.0/24').overlaps('192.168.2.0/24')
    0

學習書本:《Python自動化運維技術與最佳實踐》--劉天斯
本文為原創,若轉載,請註明出處,謝謝

相關推薦

Python實用IP地址處理模組IPy

實用的IP地址處理模組IPy 在IP地址規劃中,涉及到計算大量的IP地址,包括網段、網路掩碼、廣播地址、子網數、IP型別等 別擔心,Ipy模組拯救你。Ipy模組可以很好的輔助我們高效的完成IP的規劃工作。 原始碼方式安裝Ipy模組 $ wget https://pypi.python.org/packages

python IP地址處理模組IPy

獲取制定網段IP地址個數和地址清單,並存儲至列表中 import IPy available_ips = [ ] ips = IPy.IP( ’ 22.27.66.128/25 ’ ) print( ips.len() )

IP地址處理模組IPy

一、IPy介紹 IPy-用於處理IPv4和IPv6地址和網路的類和工具。 API介紹: IP類允許一個舒適的解析並處理大多數用於IPv4和IPv6地址和網路的符號。它受到RIPE的Perl模組NET :: IP介面的極大啟發,但不共享實現。它不共享非CIDR網路掩碼,所以像這樣的時髦網路掩碼0xff

Python學習筆記-IP地址處理模塊Ipy

模塊 python ipy IP地址處理模塊Ipy IPy模塊可以很好的輔助我們高效完成IP的規劃工作。 參考:https://github.com/autocracy/python-ipy 安裝IPy模塊[[email protected]/* */ ~]#

Python日期與時間處理模組(date和datetime)

本節內容 前言 相關術語的解釋 時間的表現形式 time模組 datetime模組 時間格式碼 總結 前言 在開發工作中,我們經常需要用到日期與時間,如: 作為日誌資訊的內容輸出 計算某個功能的執行時間 用日期命名一個日誌檔案的名稱 記錄或展示某文章的釋出或修改

1.PythonIP地址處理IPy模塊

exc rom 進制轉換 使用 targe adc put efi mes 安裝 先下載源碼,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然後解壓後使用命令python s

ip地址處理模塊IPy

python ipy下載以及安裝:下載地址:https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz tar -zxvf IPy-0.

Python基本語法join函式,模組處理

函式:string.join() Python中有join()和os.path.join()兩個函式,具體作用如下: join(): 連線字串陣列。將字串、元組、列表中的元素以指定的字元(分隔符)連線生成一個新的字串 print('\n

火狐瀏覽器偽造IP地址

前言 目的 http請求 .org 發現 步驟 mod strip forward 前言: 前段時間,測試過程中需要偽造來源IP地址,百思不得其解,因而發現火狐瀏覽器的這個Modify Headers插件,十分好用,推薦給大家。 步驟: 1、安裝插件Modify Head

IP地址和子網劃分學習筆記IP地址基礎篇》

IP地址 MAC地址 網絡通信 一、IP地址和MAC地址 1、MAC地址 MAC(Media Access Control,介質訪問控制)地址,或稱為物理地址,也叫硬件地址,用來定義網絡設備的位置,MAC地址是網卡出廠時設定的,是固定的(但可以通過在設備管理器中或註冊表等方式修改,同一網段內的MA

Linux 學習路 --------ip地址虛擬網路

// ifconfig 檢視IP地址 網路資訊   我的IP  39.161.136.25 ①     為網絡卡臨時配置IP地址 ifconfig eth0 39.161.136.5 (netmask /255.255.255.0&n

Spark案例根據ip地址計算歸屬地二

之前的是單機版的根據ip地址計算歸屬地,當資料量小的時候還可以,但是在大資料實際生產中是不行的,必須將它改造成一個Spark程式,然後在Spark叢集上執行 Spark程式和單機版的程式不一樣,下面來仔細分析一下Spark程式的執行流程 首先是一個Spark叢集,叢集中有Master和

Spark案例根據ip地址計算歸屬地一

1.需求 根據訪問日誌中的ip地址計算出訪問者的歸屬地,並且按照省份,計算出訪問次數,最後將計算好的結果寫入到Mysql中 2.思路分析   1)整理訪問日誌中的資料,切分出ip欄位,然後將ip欄位轉換成十進位制   2)載入ip地址的規則,取出有用的欄位,然後將

Spark案例根據ip地址計算歸屬地四

之前案例三中的ip地址規則是在Driver端的機器磁碟中儲存著的,但是現在如果實在hdfs中儲存著的又該如何實現呢 首先要分析清楚才能實現,儲存在hdfs中並不像想象中的那麼容易,首先程式碼實在Driver端寫的,在Driver端寫從hdfs中取出ip地址規則的程式碼會觸發action,然後生成

Spark案例根據ip地址計算歸屬地三

案例二中已經詳細的通過圖和介紹詳細的說明了在Spark叢集中根據ip地址計算歸屬地並將結果儲存到mysql資料庫中的執行流程,下面就來做具體的實現 現在的環境就如案例二中說的一樣,ip地址規則是儲存在Driver端的機器磁碟中,而日誌檔案是儲存在hdfs中,所以現在需要首先在Driver端拿到i

python整數與IP地址轉換 python整數與IP地址轉換 [轉]

python整數與IP地址轉換 [轉] 我們有時會將一個整數與IP地址進行互換,用python程式碼實現很簡單 將一個整數如2000000,變為一個IP地址的方式 >>> import socket >>>

Python物件的永久儲存模組---pickle

經常遇到在Python程式執行中得到了一些字串、列表、字典等資料,想要長久的儲存下來,方便以後使用,而不是簡單的放入記憶體中關機斷電就丟失資料。 這個時候Pickle模組就派上用場了,它可以將物件轉換為一種可以傳輸或儲存的格式。  python的pickle模組實現了基本的資料序列和反序列化

反爬蟲技術防止IP地址被封殺

在使用爬蟲爬取別的網站的資料的時候,如果爬取頻次過快,或者因為一些別的原因,被對方網站識別出爬蟲後,自己的IP地址就面臨著被封殺的風險。一旦IP被封殺,那麼爬蟲就再也爬取不到資料了。 那麼常見的更改爬蟲IP的方法有哪些呢? 1,使用動態IP撥號器伺服器。 動態IP撥號伺服器的IP地址是可

利用python爬取IP地址歸屬地等資訊!

import requests url = "http://m.ip138.com/ip.asp?ip=" try: r = requests.get(url + '202.204.80.112') r.raise_for_status()

面試題獲取IP地址

#方法一import re from lxml import html import requests def myRequest(url): ''' 封裝自己爬取exam頁面的request :param url: 地址 :return: ''' res