Для этого можно использовать модуль WMI Python (установите расширения PyWin32 и модуль WMI перед запуском этих сценариев).Вот как настроить вещи для общения с аппаратным устройством:
import wmi
# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)
# First network adaptor
nic = nic_configs[0]
# IP address, subnetmask and gateway values should be unicode objects
ip = u'192.168.0.11'
subnetmask = u'255.255.255.0'
gateway = u'192.168.0.1'
# Set IP address, subnetmask and default gateway
# Note: EnableStatic() and SetGateways() methods require *lists* of values to be passed
nic.EnableStatic(IPAddress=[ip],SubnetMask=[subnetmask])
nic.SetGateways(DefaultIPGateway=[gateway])
Вот как вернуться к автоматическому получению IP-адреса (через DHCP):
import wmi
# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)
# First network adaptor
nic = nic_configs[0]
# Enable DHCP
nic.EnableDHCP()
Примечание: вВ производственном скрипте вы должны проверить значения, возвращаемые EnableStatic () , SetGateways () и EnableDHCP () .(«0» означает успех, «1» означает, что требуется перезагрузка, а другие значения описаны на страницах MSDN, связанных именами методов. Примечание: для EnableStatic () и SetGateways () коды ошибок возвращаются в виде списков).
Полная информация обо всех функциональных возможностях класса Win32NetworkAdapterConfiguration также может быть найдена в MSDN .
Примечание. Я проверял это на Python 2.7, но так как модули PyWIn32 и WMIдоступно для Python 3, я полагаю, что вы сможете добиться того, чтобы это работало для Python 3, удалив символ "u" перед строковыми литералами.