2011-09-28 23 views
10

Uso il mio computer per comunicare con un componente hardware via ethernet. Per comunicare con questo dispositivo ho impostato il mio ip su 192 168 0 11, subnet mask su 255 255 255 0 e il gateway predefinito su 192 168 0 1 per IPv4. Per utilizzare Internet, scelgo "Ottieni automaticamente un indirizzo IP" tramite il pannello di controllo.Script per cambiare l'indirizzo IP su windows

Mi piacerebbe avere uno script che permetta al mio di scegliere rapidamente l'una o l'altra impostazione ethernet: hardware o internet.

Programma principalmente in python ma forse esiste una soluzione di file batch.

Grazie,

Barry.

+0

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

risposta

16

È possibile utilizzare il Python WMI module per fare questo (installare il PyWin32 extensions e il modulo WMI prima di eseguire questi script). Ecco come configurare le cose a parlare con il dispositivo 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]) 

Ecco come ripristinare ottenere automaticamente un indirizzo IP (tramite 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: in uno script di produzione si dovrebbe controllare i valori restituiti da EnableStatic(), SetGateways() e EnableDHCP(). ('0' significa successo, '1' significa riavvio richiesto e altri valori sono descritti nelle pagine MSDN collegate ai nomi dei metodi Nota: per EnableStatic() e SetGateways(), i codici di errore vengono restituiti come elenchi).

Le informazioni complete su tutte le funzionalità della classe Win32NetworkAdapterConfiguration possono anche essere found on MSDN.

Nota: l'ho provato con Python 2.7, ma poichè i moduli PyWIn32 e WMI sono disponibili per Python 3, credo che dovresti essere in grado di farlo funzionare per Python 3 rimuovendo la "u" prima delle stringhe letterali.

3

È possibile utilizzare il modulo sottoprocesso per iniziare

netsh interface ip set address [params] 

Avviare questo dalla linea di comando (senza [params]) per avere un aiuto come usarlo. Poi si può fare

import subprocess 
subprocess.call("netsh interface ip set address ....".split()) 
Problemi correlati