如何查找我的电脑中有多少个以太网卡?

时间:2011-12-06 15:51:40

标签: python

我想编写代码来查找我的计算机有多少个以太网卡。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

除非您考虑到任何特定的操作系统,否则没有可行的方法。

  • 对于Win32 / Win64,您可以从ipconfig / all
  • 解析o / p
  • 对于linux,您可以解析lshw -class network
  • 中的o / p
  • 至于其他系统类似的东西应该在这里

您可以通过添加更多系统,命令和解析字符串

来扩展以下代码
>>> netCmds={'Windows': [['ipconfig', '/all'], 'Description',':'], 'Linux': [['lshw', '-class', 'network'], 'product',':']}
>>> netcmd=netCmds[platform.system()]
>>> for l in subprocess.check_output(netcmd[0]).splitlines():
        if netcmd[1] in l:
            print l.split(netcmd[2])[-1]

如果您需要支持更多系统,请按以下方式附加netCmds列表

<System_name>:[[<command to list n/w info>....],<parse_string>,<Split character>]

请注意,System_info应符合目标操作系统中platform.system()的功能。

答案 1 :(得分:0)

好的,这是我的镜头(出于某种原因,我认为OP有Windows操作系统。)

import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_NetworkAdapterConfiguration")
print len(filter(lambda obj : obj.Caption.lower().find('ethernet') > -1, colItems))

您可以在此处下载导入的win32模块http://sourceforge.net/projects/pywin32/files/pywin32/Build216/

注意,我已经计算了那些适配器,其中Caption属性包含单词'ethernet'。可能你会想要使用一些更聪明的标准。

来源:http://gallery.technet.microsoft.com/scriptcenter/0acad814-7e8f-4924-af85-58b5bd6eb826

答案 2 :(得分:0)

在Linux上,您可以阅读/proc/net/dev文件或使用system()执行ifconfig -s,有关详细信息,请参阅proc manpage。或者,您可以将fcntl.ioctl() SIOCGIFCONF 一起使用。在其他类UNIX系统上ifconfigfcntl.ioctl()也应该有用。