在Python中,更改本地IP地址可以通过以下几种方法实现:
方法一:使用`socket`模块
import socket获取当前主机名和IP地址hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())print("当前 IP 地址:", ips)修改主机名和IP地址new_hostname = "newhostname"new_ip_address = "192.168.1.100"socket.sethostname(new_hostname)socket.gethostbyname_ex(new_hostname)修改网络接口的IP地址socket.ifconfig("lo", [ "inet", new_ip_address, "netmask", "255.255.255.0" ])再次获取新的IP地址_, _, ips = socket.gethostbyname_ex(new_hostname)print("新的 IP 地址:", ips)
方法二:使用`netifaces`库
import netifaces获取当前主机的IP地址interfaces = netifaces.interfaces()for interface in interfaces:addresses = netifaces.ifaddresses(interface)if netifaces.AF_INET in addresses:ip_address = addresses[netifaces.AF_INET]['addr']print("当前 IP 地址:", ip_address)修改指定网卡的IP地址new_ip_address = "192.168.1.100"netifaces.ifconfig(interface, new_ip_address)再次获取新的IP地址interfaces = netifaces.interfaces()for interface in interfaces:addresses = netifaces.ifaddresses(interface)if netifaces.AF_INET in addresses:ip_address = addresses[netifaces.AF_INET]['addr']print("新的 IP 地址:", ip_address)
方法三:使用`wmi`库(仅限Windows)

import wmi获取本地有网卡信息wmiService = wmi.WMI()colNicConfigs = wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=True)随机修改指定IP段的本机IPdef getAdapter():for obj in colNicConfigs:ip = re.findall("10.\d+\.\d+\.\d+", obj.IPAddress)if len(ip) > 0:return Truereturn Falsedef runSet():adapter = colNicConfigs[getAdapter()]这里需要根据具体情况修改适配器信息运行设置runSet()
方法四:修改Windows注册表(仅限Windows)
import winreg打开注册表项key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters")遍历网络适配器,找到需要修改的那个for i in range(0, winreg.QueryInfoKey(key)):name = winreg.EnumKey(key, i)这里需要根据具体情况修改适配器信息修改该适配器的IP地址和子网掩码winreg.SetValueEx(key, name, 0, winreg.REG_SZ, "10.0.0.2")winreg.SetValueEx(key, name, 1, winreg.REG_SZ, "255.255.255.0")winreg.SetValueEx(key, name, 2, winreg.REG_SZ, "10.0.0.1")关闭注册表winreg.CloseKey(key)
