można użyć Python WMI module to zrobić (zainstalować PyWin32 extensions oraz modułu WMI przed uruchomieniem tych skryptów). Oto jak skonfigurować rzeczy rozmawiać z urządzeniem sprzętowym:
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])
Oto jak powrócić do uzyskania adresu IP automatycznie (poprzez 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()
Uwaga: w skrypcie produkcji ty powinien sprawdzić wartości zwrócone przez EnableStatic(), SetGateways() i EnableDHCP(). ("0" oznacza sukces, "1" oznacza wymagane ponowne uruchomienie, a inne wartości są opisane na stronach MSDN powiązanych z nazwami metod Uwaga: w przypadku EnableStatic() i SetGateways() kody błędów są zwracane w postaci list).
Pełna informacja o całej funkcjonalności klasy Win32NetworkAdapterConfiguration może być również found on MSDN.
Uwaga: Testowałem to w Pythonie 2.7, ale ponieważ PyWIn32 i moduły WMI są dostępne dla Pythona 3, wierzę, że powinieneś być w stanie to zrobić dla Pythona 3, usuwając "u" sprzed literałów ciągu.
Powiązane pytanie: http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot