婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python獲取linux和windows系統指定接口的IP地址的步驟及代碼

python獲取linux和windows系統指定接口的IP地址的步驟及代碼

熱門標簽:公司電話機器人 陜西金融外呼系統 唐山智能外呼系統一般多少錢 哈爾濱ai外呼系統定制 海南400電話如何申請 廣告地圖標注app 白銀外呼系統 騰訊外呼線路 激戰2地圖標注

實驗目的:

用戶輸入網卡名稱,通過函數返回對應的IPv4和IPv6地址。

實驗代碼:

步驟一: 由于window系統下網卡名稱并不是真正的名字,而真正的ID在注冊表SYSTEM\CurrentControlSet\Control\Network{4d36e972-e325-11ce-bfc1-08002be10318}目錄下。所以需要通過如下代碼,返回接口名稱和唯一ID的對應關系。

win_ifname.py:

import netifaces as ni
# import winreg as wr

# 將windows下的接口的名稱和唯一ID一一對應存入字典并返回
def get_connection_name_from_guid(iface_guids):  
    wr = __import__('winreg', globals(), locals(), ['wr'])
    iface_dict = {}
    reg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
    reg_key = wr.OpenKey(reg, r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}')

    for i in iface_guids:
        try:
            reg_subkey = wr.OpenKey(reg_key, i + r'\Connection')
            iface_dict[wr.QueryValueEx(reg_subkey, 'Name')[0]] = i
        except FileNotFoundError:
            pass
    return iface_dict

 # 根據輸入的接口名稱,返回唯一ID
def win_from_name_get_id(ifname): 
    x = ni.interfaces()
    return get_connection_name_from_guid(x).get(ifname)


if __name__ == '__main__':
    import platform

    if platform.system() == "Windows":
        print(win_from_name_get_id("WLAN"))

運行結果:

可以看到獲取WLAN接口的ID和注冊表中查看的一致。

步驟二: 通過接口名稱(linux)或者接口ID(windows)找到IPv4和IPv6地址。

from netifaces import ifaddresses, AF_INET, AF_INET6
import platform

# 獲取接口IPv4地址
def get_ip_address(ifname):
    if platform.system() == "Linux":
        try:
        	# AF_INET表示的是IPv4地址(AF_LINK則表示的是MAC地址)
            return ifaddresses(ifname)[AF_INET][0]['addr']
        except ValueError:
            return None
    elif platform.system() == "Windows":
    	# 需要首先調用win_from_name_get_id函數,獲取接口的ID
        from win_ifname import win_from_name_get_id
        if_id = win_from_name_get_id(ifname)
        if not if_id:
            return
        else:
            return ifaddresses(if_id)[AF_INET][0]['addr']
    else:
        print('操作系統不支持,本腳本只能工作在Windows或者Linux環境!')

# 獲取接口IPv6地址,和IPv4同理
def get_ipv6_address(ifname):
    if platform.system() == "Linux":
        try:
            return ifaddresses(ifname)[AF_INET6][0]['addr']
        except ValueError:
            return None
    elif platform.system() == "Windows":
        from win_ifname import win_from_name_get_id
        if_id = win_from_name_get_id(ifname)
        if not if_id:
            return
        else:
            # 此處依然要提供WIN的網卡ID, 而不是名字
            return ifaddresses(if_id)[AF_INET6][0]['addr']
    else:
        print('操作系統不支持,本腳本只能工作在Windows或者Linux環境!')


if __name__ == "__main__":
    if platform.system() == "Linux":
        print(get_ip_address('ens33'))
        print(get_ipv6_address('ens33'))
    elif platform.system() == "Windows":
        print(get_ip_address('WLAN'))
        print(get_ipv6_address('WLAN'))

測試結果:
windows平臺下:

Linux平臺下:

到此這篇關于python獲取linux和windows系統指定接口的IP地址的文章就介紹到這了,更多相關python獲取接口ip地址內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python腳本激活Linux密碼的方法(crypt模塊)
  • python滲透測試linux密碼激活的示例
  • 聊聊python在linux下與windows下導入模塊的區別說明
  • linux centos 7.x 安裝 python3.x 替換 python2.x的過程解析
  • 在Linux下使用命令行安裝Python

標簽:益陽 鷹潭 惠州 黔西 四川 黑龍江 上海 常德

巨人網絡通訊聲明:本文標題《python獲取linux和windows系統指定接口的IP地址的步驟及代碼》,本文關鍵詞  python,獲取,linux,和,windows,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python獲取linux和windows系統指定接口的IP地址的步驟及代碼》相關的同類信息!
  • 本頁收集關于python獲取linux和windows系統指定接口的IP地址的步驟及代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 运城市| 上虞市| 石家庄市| 韩城市| 通河县| 高邮市| 南部县| 芮城县| 竹北市| 德州市| 新兴县| 万年县| 阿克苏市| 噶尔县| 旬邑县| 常德市| 隆子县| 华容县| 临夏县| 林州市| 宜兰市| 克什克腾旗| 邢台县| 施甸县| 阿巴嘎旗| 彝良县| 隆化县| 闽清县| 潜山县| 长兴县| 漯河市| 友谊县| 通州市| 湛江市| 郴州市| 凤山市| 商城县| 理塘县| 漯河市| 南雄市| 锡林郭勒盟|