Vous pouvez utiliser le logiciel Python Module WMI pour ce faire (installer le Extensions PyWin32 et le module WMI avant d'exécuter ces scripts). Voici comment configurer les choses pour parler au périphérique matériel :
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])
Voici comment revenir à l'obtention automatique d'une adresse IP (via 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()
Note : dans un script de production, vous devez vérifier les valeurs renvoyées par EnableStatic() , SetGateways() y EnableDHCP() . (0 signifie succès, 1 signifie redémarrage requis et les autres valeurs sont décrites dans les pages MSDN auxquelles renvoient les noms des méthodes. Remarque : pour EnableStatic() et SetGateways(), les codes d'erreur sont renvoyés sous forme de listes).
Des informations complètes sur toutes les fonctionnalités de la classe Win32NetworkAdapterConfiguration peuvent également être obtenues auprès de l'Office national de l'énergie. trouvé sur MSDN .
Note : J'ai testé ceci avec Python 2.7, mais comme les modules PyWIn32 et WMI sont disponibles pour Python 3, je pense que vous devriez être en mesure de faire fonctionner ceci pour Python 3 en supprimant le "u" avant les chaînes littérales.