最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python獲取本機所有網卡ip,掩碼和廣播地址實例代碼

 更新時間:2018年01月22日 08:38:51   作者:davelam1991  
這篇文章主要介紹了Python獲取本機所有網卡ip,掩碼和廣播地址實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文主要研究的是使用Python獲取本機所有網卡ip,掩碼和廣播地址,分享了相關的實例代碼,具體介紹如下。

搜了一天,竟然沒找到一段合適的代碼來獲取機器中所有網卡的ip,掩碼和廣播地址,大部分都是用socket,但是socket通常返回的要不就是內網地址,要不就是公網地址,不能夠找到所有地址,真的太憂桑了,決定自己通過ifconfig或ipconfig的返回信息,一步步地過濾了。這次的代碼主要用到了正則表達式和subprocess模塊,而且為了兼容所有平臺(win,linux和mac),也用到了platform來判斷系統(tǒng)類型,不說太多,代碼如下:

import subprocess
import re
import platform


def find_all_ip(platform):
 ipstr = '([0-9]{1,3}\.){3}[0-9]{1,3}'
 if platform == "Darwin" or platform == "Linux":
  ipconfig_process = subprocess.Popen("ifconfig", stdout=subprocess.PIPE)
  output = ipconfig_process.stdout.read()
  ip_pattern = re.compile('(inet %s)' % ipstr)
  if platform == "Linux":
   ip_pattern = re.compile('(inet addr:%s)' % ipstr)
  pattern = re.compile(ipstr)
  iplist = []
  for ipaddr in re.finditer(ip_pattern, str(output)):
   ip = pattern.search(ipaddr.group())
   if ip.group() != "127.0.0.1":
    iplist.append(ip.group())
  return iplist
 elif platform == "Windows":
  ipconfig_process = subprocess.Popen("ipconfig", stdout=subprocess.PIPE)
  output = ipconfig_process.stdout.read()
  ip_pattern = re.compile("IPv4 Address(\. )*: %s" % ipstr)
  pattern = re.compile(ipstr)
  iplist = []
  for ipaddr in re.finditer(ip_pattern, str(output)):
   ip = pattern.search(ipaddr.group())
   if ip.group() != "127.0.0.1":
    iplist.append(ip.group())
  return iplist


def find_all_mask(platform):
 ipstr = '([0-9]{1,3}\.){3}[0-9]{1,3}'
 maskstr = '0x([0-9a-f]{8})'
 if platform == "Darwin" or platform == "Linux":
  ipconfig_process = subprocess.Popen("ifconfig", stdout=subprocess.PIPE)
  output = ipconfig_process.stdout.read()
  mask_pattern = re.compile('(netmask %s)' % maskstr)
  pattern = re.compile(maskstr)
  if platform == "Linux":
   mask_pattern = re.compile(r'Mask:%s' % ipstr)
   pattern = re.compile(ipstr)
  masklist = []
  for maskaddr in mask_pattern.finditer(str(output)):
   mask = pattern.search(maskaddr.group())
   if mask.group() != '0xff000000' and mask.group() != '255.0.0.0':
    masklist.append(mask.group())
  return masklist
 elif platform == "Windows":
  ipconfig_process = subprocess.Popen("ipconfig", stdout=subprocess.PIPE)
  output = ipconfig_process.stdout.read()
  mask_pattern = re.compile(r"Subnet Mask (\. )*: %s" % ipstr)
  pattern = re.compile(ipstr)
  masklist = []
  for maskaddr in mask_pattern.finditer(str(output)):
   mask = pattern.search(maskaddr.group())
   if mask.group() != '255.0.0.0':
    masklist.append(mask.group())
  return masklist


def get_broad_addr(ipstr, maskstr):
 iptokens = map(int, ipstr.split("."))
 masktokens = map(int, maskstr.split("."))
 broadlist = []
 for i in range(len(iptokens)):
  ip = iptokens[i]
  mask = masktokens[i]
  broad = ip & mask | (~mask & 255)
  broadlist.append(broad)
 return '.'.join(map(str, broadlist))


def find_all_broad(platform):
 ipstr = '([0-9]{1,3}\.){3}[0-9]{1,3}'
 if platform == "Darwin" or platform == "Linux":
  ipconfig_process = subprocess.Popen("ifconfig", stdout=subprocess.PIPE)
  output = (ipconfig_process.stdout.read())
  broad_pattern = re.compile('(broadcast %s)' % ipstr)
  if platform == "Linux":
   broad_pattern = re.compile(r'Bcast:%s' % ipstr)
  pattern = re.compile(ipstr)
  broadlist = []
  for broadaddr in broad_pattern.finditer(str(output)):
   broad = pattern.search(broadaddr.group())
   broadlist.append(broad.group())
  return broadlist
 elif platform == "Windows":
  iplist = find_all_ip(platform)
  masklist = find_all_mask(platform)
  broadlist = []
  for i in range(len(iplist)):
   broadlist.append(get_broad_addr(iplist[i], masklist[i]))
  return broadlist


system = platform.system()
print(find_all_ip(system))
print(find_all_mask(system))
print(find_all_broad(system))

總結

以上就是本文關于Python獲取本機所有網卡ip,掩碼和廣播地址實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • Django自定義全局403、404、500錯誤頁面的示例代碼

    Django自定義全局403、404、500錯誤頁面的示例代碼

    這篇文章主要介紹了Django自定義全局403、404、500錯誤頁面的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Python?字典中鍵映射多個值的問題解決

    Python?字典中鍵映射多個值的問題解決

    本文主要介紹了在Python中實現(xiàn)一個字典multidict中鍵可以對應多個值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 教你安裝python Django(圖文)

    教你安裝python Django(圖文)

    web開發(fā)語言越來越多,本文是安裝python Django,看完之后就可以使用PYTHON做開發(fā)了。
    2013-11-11
  • Python魔術方法詳解

    Python魔術方法詳解

    這篇文章主要介紹了Python魔術方法詳解,本文講解了構造和初始化、用于比較的魔術方法、數(shù)值處理的魔術方法、普通算數(shù)操作符等內容,需要的朋友可以參考下
    2015-02-02
  • Python處理JSON數(shù)據(jù)并生成條形圖

    Python處理JSON數(shù)據(jù)并生成條形圖

    本文詳細介紹如何利用Python進行數(shù)據(jù)分析,嘗試處理一份JSON數(shù)據(jù)并生成條形圖的過程,有需要的朋友們可以參考學習。
    2016-08-08
  • 使用wxPython實現(xiàn)逐行加載HTML內容并實時顯示效果

    使用wxPython實現(xiàn)逐行加載HTML內容并實時顯示效果

    這篇博客中,我們將詳細分析如何使用 wxPython 構建一個簡單的桌面應用程序,用于逐行加載并顯示 HTML 文件的內容,并在加載完成后通過瀏覽器組件呈現(xiàn)最終頁面,通過該應用,我們可以體驗到逐行加載 HTML 內容的視覺效果,類似于模擬代碼輸入,需要的朋友可以參考下
    2024-11-11
  • 用python按照圖像灰度值統(tǒng)計并篩選圖片的操作(PIL,shutil,os)

    用python按照圖像灰度值統(tǒng)計并篩選圖片的操作(PIL,shutil,os)

    這篇文章主要介紹了用python按照圖像灰度值統(tǒng)計并篩選圖片的操作(PIL,shutil,os),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python中解析命令行參數(shù)的示例詳解

    python中解析命令行參數(shù)的示例詳解

    這篇文章主要為大家詳細介紹了python中命令行參數(shù)的解析,并做一個命令行程序,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2024-11-11
  • pyqt6實現(xiàn)QTimer定時器介紹和使用場景

    pyqt6實現(xiàn)QTimer定時器介紹和使用場景

    PyQt6中的QTimer是一個定時器類,用于在指定的時間間隔內執(zhí)行某個操作,本文主要介紹了pyqt6實現(xiàn)QTimer定時器介紹和使用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 用Anaconda安裝本地python包的方法及路徑問題(圖文)

    用Anaconda安裝本地python包的方法及路徑問題(圖文)

    這篇文章主要介紹了用Anaconda安裝本地python包的方法及路徑問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07

最新評論

枞阳县| 衡阳市| 萨嘎县| 勃利县| 聊城市| 宣汉县| 镇康县| 旬阳县| 嘉峪关市| 抚顺县| 和林格尔县| 边坝县| 灵武市| 区。| 江门市| 京山县| 汤阴县| 阳泉市| 延川县| 金塔县| 信宜市| 浦县| 南充市| 长乐市| 宁安市| 定州市| 河北区| 西平县| 洮南市| 靖远县| 元阳县| 庐江县| 贞丰县| 鞍山市| 陆良县| 泗洪县| 巩留县| 新巴尔虎左旗| 永清县| 昌乐县| 龙川县|