在Windows上更改IP地址的脚本

14 投票
5 回答
55598 浏览
提问于 2025-04-17 03:15

我用电脑通过以太网和一台硬件设备进行通信。为了和这个设备沟通,我把我的IP地址设置为192.168.0.11,子网掩码设置为255.255.255.0,默认网关设置为192.168.0.1,这些都是IPv4的设置。要上网时,我会在控制面板里选择“自动获取IP地址”。

我想要一个脚本,可以让我快速切换这两种以太网设置——硬件连接或者上网。

我主要用Python编程,但也许用批处理文件也能解决这个问题。

谢谢,

巴里。

5 个回答

-1

其实这个操作非常简单(仅限Windows系统),而且只需要使用已经安装好的库:

import os; os.system("ipconfig /renew")
6

你可以使用 subprocess 模块来启动

netsh interface ip set address [params]

从命令行启动这个(不带[params])可以得到一些使用帮助。然后你可以这样做:

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

更新:

对于那些太忙没时间看说明书的人,

netsh interface ip set address lan static 192.168.0.100 255.255.255.0
netsh interface ip set address lan dhcp

这里的 lan 是你要配置的网络接口名称,192.168.0.100 是IP地址,255.255.255.0 是网络掩码。第一个命令设置静态地址,第二个命令则是恢复到动态分配地址(dhcp)。

27

你可以使用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])

接下来是如何恢复自动获取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类的所有功能的详细信息也可以在MSDN上找到

注意:我是在Python 2.7上测试的,但由于PyWIn32和WMI模块也可以用于Python 3,我相信你只需去掉字符串前面的“u”就能在Python 3上运行这个代码。

撰写回答