Python - настройка сетевого интерфейса запроса

Моя мечта - запросить настройку сетевой карты на WIN с помощью python. Мне нужно узнать, настроен ли сетевой адаптер на полный дуплекс и установлен ли он на 1000 МБ. Класс WMI с именем Win32_NetworkAdapterConfiguration не предоставляет эту информацию. В качестве альтернативы может быть интересна также командная строка cmd (через вызов из python).

Спасибо

Ответов (3)

Это действительно не вопрос питона. Все, что вы можете делать с win32api, вы можете делать через Python, поэтому вопрос здесь касается только API Windows, и не имеет значения, что вы вызываете их из Python. На самом деле, запрос без тега Python может получить лучший ответ, потому что люди будут искать, кто знает, как это сделать на другом языке, который будет использовать тот же API.

Да! Это действительно не вопрос питона. В любом случае взгляните на: Список свойств конфигурации сетевого адаптера

и просматривает репозиторий сценариев python @ microsoft, который может быть полезен для вашей проблемы.

Вы также можете найти полезное в python:

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

Как сказал @ironfroggy, это не относится к Python, а является общим вопросом Windows.

Когда мы хотели программно найти настройки скорости и дуплекса на сетевых картах, это было очень сложно. В конце концов, мы прибегли к блужданию по реестру, который имеет разную структуру в зависимости от производителя вашей сетевой карты.

Это выглядит примерно так; приносим свои извинения за любые ошибки:

  1. Найдите HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Networkи найдите идентификаторы GUID с данными «Сетевые адаптеры». Назовите это <GUID1>.
  2. Под <GUID1>ключом находится еще один GUID для каждой сетевой карты. Позвоните одному из них <GUID2>.
  3. Перейти к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<GUID1>.
  4. Перебирайте его ключи (они выглядят как 0000, 0001, 0002 и т. Д.), Пока не найдете ключ со значением, NetCfgInstanceIdравным <GUID2>.
  5. Ниже найдите подраздел, зависящий от поставщика сетевой карты. Вот некоторые из них, которые мы определили:
    • Ndi \ Params
    • Ndi \ savedParams
    • BRCMndi \ params
  6. Внизу перебирайте ключи, пока не найдете ключ со значением с именем ParamDesc, данные которого содержат слова «скорость» и «дуплекс». Запомнил название ключа и назвал его <SpeedDuplexParamName>.
  7. Под <SpeedDuplexParamName>ним находится enumключ, который соответствует числам с такими описаниями, как «Автоопределение» и «100 Мбайт заполнено».
  8. Вернитесь на несколько уровней назад туда, где вы нашли NetCfgInstanceId. Рядом вы можете увидеть текущее значение в виде перечисления. Например, здесь имя значения было, RequestedMediaTypeа значение - 6.
  9. Найдите значение перечисления, чтобы найти скорость и настройку дуплекса.

Я вижу, что @ DrFalk3n ссылается на статью Microsoft, которая может сказать то же самое, но я оставлю это здесь на случай, если это будет полезно.