我想编写代码来查找我的计算机有多少个以太网卡。有什么想法吗?
答案 0 :(得分:2)
除非您考虑到任何特定的操作系统,否则没有可行的方法。
您可以通过添加更多系统,命令和解析字符串
来扩展以下代码>>> 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系统上ifconfig
和fcntl.ioctl()
也应该有用。