Python3.10动态修改Windows系统本地IP地址

 更新时间:2023年05月09日 08:24:19   作者:刘悦的技术博客  
这篇文章主要介绍了Python3.10动态修改Windows系统本地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('''(?&lt;=以太网适配器 ).*?(?=:)|(?&lt;=无线局域网适配器 ).*?(?=:)''', 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的繁琐过程。

到此这篇关于Python3.10动态修改Windows系统本地IP地址的文章就介绍到这了,更多相关Python3.10动态修改本地IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • keras 自定义loss model.add_loss的使用详解

    keras 自定义loss model.add_loss的使用详解

    这篇文章主要介绍了keras 自定义loss model.add_loss的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 如何利用pyecharts画好看的饼状图

    如何利用pyecharts画好看的饼状图

    这篇文章主要给大家介绍了关于如何利用pyecharts画好看的饼状图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 在Python中使用Protocol Buffers的详细介绍

    在Python中使用Protocol Buffers的详细介绍

    本文详细介绍了协议缓冲区(Protocol Buffers)在Python中的应用,包括其定义、序列化和解析过程,协议缓冲区是一种灵活且高效的自动化解决方案,本文包括了如何将地址簿应用程序的个人详细信息写入文件的示例代码,并提供了相应的下载和安装指导,感兴趣的朋友一起看看吧
    2024-10-10
  • 彻底搞懂 python 中文乱码问题(深入分析)

    彻底搞懂 python 中文乱码问题(深入分析)

    现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题
    2020-02-02
  • 详解js文件通过python访问数据库方法

    详解js文件通过python访问数据库方法

    在本篇内容里小编给大家分享了关于js文件通过python访问数据库方法和技巧,有需要的朋友们跟着学习参考下。
    2019-03-03
  • Python实现导弹自动追踪代码实例

    Python实现导弹自动追踪代码实例

    这篇文章主要介绍了Python实现导弹自动追踪代码实例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • python 比较2张图片的相似度的方法示例

    python 比较2张图片的相似度的方法示例

    这篇文章主要介绍了python 比较2张图片的相似度的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python基础详解之邮件处理

    Python基础详解之邮件处理

    这篇文章主要介绍了Python基础详解之邮件处理,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • pytorch中torch.stack()函数用法解读

    pytorch中torch.stack()函数用法解读

    这篇文章主要介绍了pytorch中torch.stack()函数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 一文教你Python如何使用sqlparse玩转SQL解析

    一文教你Python如何使用sqlparse玩转SQL解析

    sqlparse 是一个 Python 第三方库,专门用于解析和格式化 SQL 语句,它提供了强大的 SQL 解析功能,下面小编就来为大家详细介绍一下它的具体使用吧
    2025-02-02

最新评论