【问题标题】:Python - query network interface settingPython - 查询网络接口设置
【发布时间】:2009-02-27 13:25:20
【问题描述】:

我的梦想是使用python查询WIN上的网卡设置。我需要查询网卡是否设置为全双工以及是否设置为 1000Mb 满。名为 Win32_NetworkAdapterConfiguration 的 WMI 类不提供这些信息。或者,也可以使用 cmd 命令行解决方案(通过从 python 调用)。

谢谢

【问题讨论】:

  • 我已经删除了 Python 标签,所以那些忽略 Python 问题的 Windows 用户可能会看到它。您也应该编辑问题的标题以删除 Python。

标签: windows networking


【解决方案1】:

正如@ironfroggy 所说,这不是 Python 特有的,而是一般的 Windows 问题。

当我们想以编程方式查找网卡上的速度和双工设置时,这非常困难。最后,我们求助于在注册表中徘徊,根据您的 NIC 供应商的不同,注册表具有不同的结构。

它是这样的;对任何错误深表歉意:

  1. 查找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network 并查找具有“网络适配器”数据的 GUID。打电话给<GUID1>
  2. <GUID1> 键下方是每个 NIC 的另一个 GUID。致电其中一位<GUID2>
  3. 转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<GUID1>
  4. 遍历其键(它们看起来像 0000、0001、0002 等),直到找到值 NetCfgInstanceId 等于 <GUID2> 的键。
  5. 在此下方,查找依赖于 NIC 供应商的子项。我们定义的一些是:
    • Ndi\Params
    • Ndi\savedParams
    • BRCMndi\params
  6. 在下面,遍历键,直到找到一个具有名为ParamDesc 的值,其数据包含单词“速度”和“双工”。记住键名并命名为<SpeedDuplexParamName>
  7. <SpeedDuplexParamName> 下方有一个enum 键,它将数字与“自动检测”和“100 Mb 已满”等描述相匹配。
  8. 返回几级到您找到NetCfgInstanceId 的位置。在附近,您可以将当前值视为枚举。例如,此处的值名称为 RequestedMediaType,值为 6。
  9. 查找枚举值以查找速度和双工设置。

我看到@DrFalk3n 链接到了一篇可能有相同含义的 Microsoft 文章,但我将把它留在这里以防万一。

【讨论】:

    【解决方案2】:

    这真的不是一个 python 问题。你可以用 win32api 做的任何事情,你都可以通过 Python 做,所以这里的问题只是关于 windows API,你碰巧从 Python 调用它们没有任何区别。实际上,不带 Python 标签的询问可能会得到更好的响应,因为人们会看谁知道如何用另一种语言来做到这一点,这将使用相同的 API。

    【讨论】:

      【解决方案3】:

      是的!这真的不是一个python问题。无论如何看看: List Network Adapter Configuration Properties

      然后浏览 python@microsoft 脚本repository 可能对您的问题有帮助。

      你也可以在python中找到有用的:

      >>> import os
      >>> f= os.popen('<type your dos command>')
      >>> s = f.read()
      >>> print s
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 1970-01-01
        • 2017-07-13
        • 2018-05-04
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        相关资源
        最近更新 更多