2011-09-28 11 views
10

Używam komputera do komunikacji z urządzeniem za pośrednictwem sieci Ethernet. Aby komunikować się z tym urządzeniem, ustawiłem IP na 192 168 0 11, maska ​​podsieci na 255 255 255 0, a brama domyślna na 192 168 0 1 dla IPv4. Aby korzystać z Internetu, wybieram "Uzyskaj adres IP automatycznie" za pośrednictwem panelu sterowania.Skrypt do zmiany adresu IP w systemie Windows

Chciałbym mieć skrypt, który pozwala mi szybko wybrać jedno lub drugie ustawienie sieci Ethernet - sprzęt lub internet.

Programuję głównie w Pythonie, ale być może istnieje rozwiązanie dla plików wsadowych.

Dzięki,

Barry.

+0

Powiązane pytanie: http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot

Odpowiedz

16

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.

3

Można użyć subprocess moduł zacząć

netsh interface ip set address [params] 

start to z linii poleceń (bez [params]), aby uzyskać pomoc, jak go używać. Następnie można zrobić

import subprocess 
subprocess.call("netsh interface ip set address ....".split()) 
Powiązane problemy