在Windows上更改IP地址的脚本

Baz*_*Baz 12 python windows batch-file ipv4 windows-7

我用我的电脑通过以太网与一块硬件进行通信.要与此设备通信,我将ip设置为192 168 0 11,将子网掩码设置为255 255 255 0,将默认网关设置为192 168 0 1 for IPv4.要使用互联网,我选择"通过控制面板自动获取IP地址".

我想要一个脚本,允许我快速选择一个或另一个以太网设置 - 硬件或互联网.

我主要在python中编程,但也许有一个批处理文件解决方案.

谢谢,

巴里.

msa*_*ers 17

您可以使用Python WMI模块执行此操作(在运行这些脚本之前安装PyWin32扩展和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])
Run Code Online (Sandbox Code Playgroud)

以下是如何恢复自动获取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()
Run Code Online (Sandbox Code Playgroud)

注意:在生产脚本中,您应该检查EnableStatic(),SetGateways()EnableDHCP()返回的值.('0'表示成功,'1'表示需要重新启动,其他值在通过方法名称链接的MSDN页面上描述.注意:对于EnableStatic()和SetGateways(),错误代码将作为列表返回).

有关Win32NetworkAdapterConfiguration类的所有功能的完整信息也可以在MSDN找到.

注意:我使用Python 2.7对此进行了测试,但由于PyWIn32和WMI模块可用于Python 3,我相信您应该能够通过从字符串文字之前删除"u"来使其适用于Python 3.


roc*_*ker 5

您可以使用子流程模块来启动

netsh interface ip set address [params]
Run Code Online (Sandbox Code Playgroud)

从命令行启动此命令(不带[params])以获取有关如何使用它的帮助。那你可以做

import subprocess
subprocess.call("netsh interface ip set address ....".split())
Run Code Online (Sandbox Code Playgroud)

更新:

对于那些忙于rtfm的人,

netsh interface ip set address lan static 192.168.0.100 255.255.255.0
netsh interface ip set address lan dhcp
Run Code Online (Sandbox Code Playgroud)

lan是要配置的网络接口的名称,192.168.0.100是IP地址,255.255.255.0是网络掩码。第一个命令设置静态地址,第二个命令还原为dhcp。