2011-09-28 75 views
10

我用我的電腦通過以太網與硬件通信。爲了與這個設備進行通信,我將我的ip設置爲192 168 0 11,子網掩碼設置爲255 255 255 0,默認網關設置爲192 168 0 1。要使用互聯網,我選擇通過控制面板「自動獲取IP地址」。在windows上更改ip地址的腳本

我想要一個腳本,允許我快速選擇一個或其他以太網設置 - 硬件或互聯網。

我主要在python程序,但也許有一個批處理文件的解決方案。

謝謝,

巴里。

+0

相關問題:http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot

回答

16

您可以使用Python WMI module做到這一點(運行這些腳本之前安裝PyWin32 extensions和WMI模塊)。下面是如何配置的東西去跟硬件設備:

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]) 

以下是如何恢復到自動獲取IP地址(通過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() 

注:在生產腳本你應該檢查EnableStatic(),SetGateways()EnableDHCP()返回的值。 ('0'表示成功,'1'表示需要重新啓動,其他值在方法名稱鏈接的MSDN頁面上進行描述注意:對於EnableStatic()和SetGateways(),錯誤代碼以列表形式返回。

有關Win32NetworkAdapterConfiguration類的所有功能的完整信息也可以是found on MSDN

注意:我用Python 2.7測試了這個,但由於PyWIn32和WMI模塊可用於Python 3,我相信你應該能夠通過從字符串文字之前刪除「u」來獲得Python 3的工作。

3

可以使用模塊開始

netsh interface ip set address [params] 

開始這個從命令行(無[PARAMS])得到一些幫助如何使用它。然後,你可以做

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