2011-09-28 28 views
10

Uso mi computadora para comunicarme con un hardware a través de ethernet. Para comunicarme con este dispositivo, establecí mi ip en 192 168 0 11, la máscara de subred en 255 255 255 0 y la puerta de enlace predeterminada en 192 168 0 1 para IPv4. Para usar Internet, elijo "Obtener una dirección IP automáticamente" a través del panel de control.Secuencia de comandos para cambiar la dirección IP en Windows

Me gustaría tener un script que me permita elegir rápidamente una u otra configuración de ethernet: hardware o internet.

Programa principalmente en python pero quizás haya una solución de archivo por lotes.

Gracias,

Barry.

+0

Pregunta relacionada: http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot

Respuesta

16

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.

3

Usted puede utilizar el módulo subproceso para iniciar

netsh interface ip set address [params] 

inicio esto desde la línea de comandos (sin [params]) para obtener un poco de ayuda a usarlo. A continuación, puede hacer

import subprocess 
subprocess.call("netsh interface ip set address ....".split()) 
Cuestiones relacionadas