Puede utilizar el pitón WMI module para hacer esto (instalar el PyWin32 extensions y el módulo WMI antes de ejecutar estos scripts). Aquí es cómo configurar las cosas para hablar con el dispositivo de hardware:
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])
aquí es cómo para volver a obtener una dirección IP automáticamente (mediante 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()
Nota: en un guión de producción se debe verificar los valores devueltos por EnableStatic(), SetGateways() y EnableDHCP(). ('0' significa éxito, '1' significa reinicio requerido y otros valores se describen en las páginas MSDN enlazadas por los nombres del método. Nota: para EnableStatic() y SetGateways(), los códigos de error se muestran como listas).
La información completa sobre toda la funcionalidad de la clase Win32NetworkAdapterConfiguration también puede ser found on MSDN.
Nota: Probé esto con Python 2.7, pero como los módulos PyWIn32 y WMI están disponibles para Python 3, creo que debería ser capaz de hacer que esto funcione para Python 3 eliminando la "u" antes de los literales de cadena.
Pregunta relacionada: http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot