Python3.10动态修改Windows系统(win10/win11)本地IP地址(静态IP)

简介: 一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程,缺点是容易引发IP地址的冲突,当然,还有操作层面的繁琐,如果想要切换静态IP地址,就得去网络连接设置中手动操作,本次我们使用Python3.10动态地修改电脑的静态IP地址。

一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程,缺点是容易引发IP地址的冲突,当然,还有操作层面的繁琐,如果想要切换静态IP地址,就得去网络连接设置中手动操作,本次我们使用Python3.10动态地修改电脑的静态IP地址。

获取多网卡配置

一个网卡对应一个静态IP地址,但机器上未必只有一个网卡,所以如果想动态切换,必须要指定网卡名称,Win系统中通过ipconfig命令来获取当前系统的网卡信息:

ipconfig

系统返回:

PS C:\Users\liuyue\h2102-a\videopro> ipconfig  
  
Windows IP 配置  
  
  
以太网适配器 以太网:  
  
   连接特定的 DNS 后缀 . . . . . . . :  
   本地链接 IPv6 地址. . . . . . . . : fe80::a216:f22a:52a:3388%4  
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.104  
   子网掩码  . . . . . . . . . . . . : 255.255.255.0  
   默认网关. . . . . . . . . . . . . : 192.168.1.1  
  
以太网适配器 以太网 2:  
  
   连接特定的 DNS 后缀 . . . . . . . :  
   IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:0:7703:1e08:e622:2f0  
   临时 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:0:717c:b59e:b6cd:51b2  
   本地链接 IPv6 地址. . . . . . . . : fe80::2645:f265:ad72:c751%16  
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.118  
   子网掩码  . . . . . . . . . . . . : 255.255.255.0  
   默认网关. . . . . . . . . . . . . :  
  
以太网适配器 vEthernet (Default Switch):  
  
   连接特定的 DNS 后缀 . . . . . . . :  
   本地链接 IPv6 地址. . . . . . . . : fe80::3ece:9b38:2572:4e33%18  
   IPv4 地址 . . . . . . . . . . . . : 172.31.16.1  
   子网掩码  . . . . . . . . . . . . : 255.255.240.0  
   默认网关. . . . . . . . . . . . . :

如果想通过Python来获取网卡信息,则需要在脚本中运行ipconfig命令,构建change\_ip.py脚本:

import os,re  
  
class IpManage:  
  
    def __init__(self):  
  
        self.ip_list = self.get_ip()  
  
  
    def get_ip(self):  
  
  
        result = os.popen('ipconfig')  
        res = result.read()  
  
        resultlist = re.findall('''(?<=以太网适配器 ).*?(?=:)|(?<=无线局域网适配器 ).*?(?=:)''', res)  
  
        print(resultlist)  
  
        return resultlist  
  
if __name__ == '__main__':  
      
    IpManage()

这里通过os模块的popen方法来运行ipconfig命令,随后再使用正则来匹配网卡名称,最后将匹配到的网卡列表赋值给实例属性,程序返回:

['以太网', '以太网 2', 'vEthernet (Default Switch)']  
[Finished in 394ms]

至此,三块网卡的名称就获取到了。

动态切换静态IP

接下来就是通过Python脚本来动态切换指定网卡的静态IP地址了,Windows系统通过netsh命令来指定IP地址:

netsh interface ip set address name=以太网 static 192.168.201.137 255.255.248.0 192.168.200.1

这里name参数是网卡名称,后来三个地址分别代表静态IP地址,子网掩码以及网关地址。

这里将第一块网卡的静态IP地址设置为192.168.201.137,子网掩码是255.255.248.0,网关地址为192.168.200.1。

随后在Windows的网络连接设置中进行查看:

发现已经设置好了,随后再手动修改为自动获得IP地址选项。

下面通过Python脚本进行设置:

def set_ip(self,name,ip="192.168.201.137",mask="255.255.248.0",gateway="192.168.200.1"):  
  
        result = os.popen(f"netsh interface ip set address name={name} static {ip} {mask} {gateway}")  
        res = result.read()  
  
        print(res)

这里添加一个实例方法来设置ip地址,同样使用popen方法来运行命令,随后进行调用:

if __name__ == '__main__':  
      
    im = IpManage()  
  
    im.set_ip(im.ip_list[0])

这里将第一块网卡的IP地址进行指定操作。

完整代码:

import os,re  
  
class IpManage:  
  
    def __init__(self):  
  
        self.ip_list = self.get_ip()  
  
  
    def set_ip(self,name,ip="192.168.201.137",mask="255.255.248.0",gateway="192.168.200.1"):  
  
        result = os.popen(f"netsh interface ip set address name={name} static {ip} {mask} {gateway}")  
        res = result.read()  
  
  
  
    def get_ip(self):  
  
  
        result = os.popen('ipconfig')  
        res = result.read()  
  
        resultlist = re.findall('''(?<=以太网适配器 ).*?(?=:)|(?<=无线局域网适配器 ).*?(?=:)''', res)  
  
        print(resultlist)  
  
        return resultlist  
  
if __name__ == '__main__':  
      
    im = IpManage()  
  
    im.set_ip(im.ip_list[0])

结语

藉此,我们就可以通过Python3.10动态地配置本地网卡的静态IP地址,也可以理解为是一种Python自动化流程,静态IP地址可以让IP地址语义化,对于数据中心、网站、银行的结算端口等往往需要静态IP,与此同时,也省却了手动配置静态IP的繁琐过程。

相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
217 55
|
2月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
71 4
|
9天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
102 66
|
30天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
155 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
5天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
10天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
42 5
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
39 4
基于Python深度学习的果蔬识别系统实现
|
2月前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
55 6
|
2月前
|
Python
Python之音乐专辑管理系统
音乐专辑管理系统是一款用于管理和维护音乐专辑信息的应用程序,支持添加、删除、修改和查询专辑详情(如专辑名、艺术家、发行日期及曲目列表)。系统运行需Python 3.x环境,硬件要求较低,适合个人及小型团队使用。
64 4