2016-10-11 14 views

答えて

0

netifacesパッケージは、プラットフォームに依存しないネットワークインターフェイスとアドレス情報を取得する方法を提供します。 ipaddressパッケージ(Python3の標準、Python2の外部)は便利なis_loopbackメソッドを提供します。

それはまさに簡単なことではないのですが、ここで私のために少なくとも一度働いていたいくつかのコードは次のとおりです。

import netifaces 
import ipaddress 
from pprint import pprint 


def get_local_non_loopback_ipv4_addresses(): 
    for interface in netifaces.interfaces(): 
     # Not all interfaces have an IPv4 address: 
     if netifaces.AF_INET in netifaces.ifaddresses(interface): 
      # Some interfaces have multiple IPv4 addresses: 
      for address_info in netifaces.ifaddresses(interface)[netifaces.AF_INET]: 
       address_object = ipaddress.IPv4Address(unicode(address_info['addr'], 'utf-8')) 
       if not address_object.is_loopback: 
        yield address_info['addr'] 

pprint(list(get_local_non_loopback_ipv4_addresses())) 

address_info変数はまた、あなたがより多くの情報のためにアクセスすることができnetmaskbroadcastキーを持っていること。

オブジェクトには、同様のクエリで使用できるis_privateis_globalというメソッドもあります。

関連する問題