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

news2024/9/27 12:15:51

一般情况下,局域网里的终端比如本地服务器设置静态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的繁琐过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/504607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot ( 一 ) 搭建项目环境

1.搭建环境 1.1.创建项目向导 使用idea中的向导创建SpringBoot项目 1.1.1.建立新的项目 位置 : 菜单 > File > New > Project… 1.1.2.选择向导 默认的向导URL 是 https://start.spring.io 建议使用 https://start.aliyun.com 1.1.3.配置项目信息 Group : 组织…

从地方旅游的宣传谈起:如何吸引主流媒体报道,强势刷屏?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 五一小长假已经过去好几天了&#xff0c;大家渐渐的从假期舒适的闲暇转到正常的工作生活中了&#xff0c;但利用五一热点宣传的余温还在继续&#xff0c;今天胡老师就i注意到一篇题为&am…

机器学习之朴素贝斯二、情感分析

目录标题 一、什么是朴素贝叶斯&#xff1f;二、利用朴素贝叶斯进行情感分析1. 数据类别说明2. 什么是词袋模型3. 数据展示4. 利用词袋模型进行词表构建5. 到了这一步&#xff0c;我们的前期工作都已经准备好了&#xff0c;有了样本的向量化数据&#xff0c;开始进行 朴素贝叶斯…

电容笔哪个厂家的产品比较好?苹果平板的电容笔推荐

从目前来说&#xff0c;这个苹果的正版电容笔&#xff0c;售价真的是太贵了&#xff0c;一支就要接近上千元。事实上&#xff0c;对于那些没有很多预算的人来说&#xff0c;平替电容笔是一个很好的选择。一支苹果电容笔&#xff0c;价格是四支平替电容笔的四倍&#xff0c;但平…

机器人控制系统学习和研究中数学的重要性

其实具备科学思维的方式非常非常难&#xff0c;很多情况下脑海中并非客观事实&#xff0c;而是充满了幻觉。 如果在各种AI工具中问及这样的问题&#xff0c;会得到类似如下回复&#xff1a; 机器人控制系统学习和研究中数学的重要性主要体现在以下几个方面&#xff1a; 机器人运…

C961W扫描枪

影像解码技术&#xff0c;微米级条码&#xff0c;轻松扫描 百万像素引擎&#xff0c;擅长读取制造业遇到的高密度&#xff0c;微小尺寸条码。 ≥3mil读码密度&#xff0c;准确解码。 一、产品简介 C961W是一款基于先进影像解码技术和微功率无线跳频传输技术的无线高性能、高…

Java入门 - 内含Java基础,Java高级

Java基础入门 - 内含Java基础&#xff0c;Java高级 Java 基本介绍Java 学习须知Java 学习文档Java 基础Java 基础语法Java 对象与类Java 基本数据类型Java 变量类型Java 修饰符Java 运算符Java 循环结构Java 条件语句Java switch caseJava 数组Java 日期与时间Java 正则表达式J…

好的索引当然是要覆盖了!

如果你的查询中用到了索引&#xff0c;这是一个进步&#xff0c;如果能够更进一步&#xff0c;用到了覆盖索引&#xff0c;那么就更牛了&#xff01;当我们设计一个索引的时候&#xff0c;如果能够从一个更加全面的角度去设计这个索引&#xff0c;不仅考虑到 where 中的条件&am…

大数据处理技术:从Hadoop到Spark的演进和比较

在过去的十年中&#xff0c;大数据技术的发展突飞猛进&#xff0c;各种开源大数据处理框架层出不穷&#xff0c;其中Hadoop和Spark是最受欢迎的两个框架。Hadoop是最早的开源大数据处理框架之一&#xff0c;而Spark则是在Hadoop之后出现的&#xff0c;它在内存计算和数据处理方…

for...in的用法

一、for…in的用法 1.用于对象的迭代&#xff0c;迭代除了Symbol属性外的可枚举的属性&#xff0c;包括继承的可枚举的属性&#xff08;可以用于遍历数组&#xff0c;但不建议这么用&#xff09;&#xff1b; const obj {a: 1,b: 2,c: 3,fn: function () {} }obj[Symbol()] …

Vite 的安装和基本使用

注意&#xff1a;Vite 本身也是依赖 Node.js 的&#xff0c;所以也需要安装好 Node 环境&#xff0c;并且 Vite 要求 Node 的版本要大于等于 12 版本。 下面&#xff0c;我们不会按照 Vite 官方文档中那样直接用 Vite 的脚手架搭建出一个完整的项目&#xff08;npm init vitela…

面向Java开发者的ChatGPT提示词工程(1)

各位Java开发者们&#xff0c;欢迎来到万猫学社&#xff01;在这里&#xff0c;我将和大家分享ChatGPT提示词工程的系列文章&#xff0c;希望能够和大家一起学习和探讨提示词的最佳实践。 虽然互联网上已经有很多有关提示词的材料&#xff0c;比如那些“每个人都必须知道的30个…

服务(第十八篇)mysql-索引、事务、存储引擎

索引&#xff1a; 相当于一本书的目录。 作用&#xff1a;①对字段进行升序排序 ②加快表的查询速度 副作用&#xff1a;①索引会额外占用磁盘空间 ②更新有索引的表效率很慢 使用场景&#xff1a; ①在没有索引查询某行数据&#xff0c;需要扫描全表定位到某行数据 ②有索…

【876. 链表的中间结点】

Leetcode 876. 链表的中间结点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一…

第三章数据链路层

1.数据链路层的概述 1.0地位 数据链路层在网络体系结构中所处的地位 链路(Link)就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点。数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上&#xff0c;就构成了数据链路。数据链路层以帧…

Word中同一行文字 左边居左,右边居右,并且居右的文字加长也不换行

本文将的不是Java知识&#xff0c;是Word格式问题。 如图&#xff0c;想实现下面Word中&#xff0c;同一行文字红色框内的居左显示&#xff0c;蓝色框内的居右显示&#xff1a; 步骤&#xff1a; 1.选中要居右显示的文字&#xff0c;点击左上角的小直角标志&#xff0c;选择右…

FS2116A升压IC

FS2116A升压输出12V电流1.5A芯片IC,支持3.7V升压5V3.6A&#xff0c;3.7V升压9V2A&#xff0c;3.7V升压12V1.5A&#xff0c;和两串锂电池7.4V升压 6V3.6A&#xff0c;两串锂电池7.4V升压12V2.5A输出功率。支持宽输入电压&#xff0c;外围少&#xff0c;效率高。7.4V或者8.4V电压…

mysql的存储函数与存储过程

1. 存储过程概述 我们前面所学习的 MySQL 语句都是针对一个表或几个表的单条 SQL 语句&#xff0c;但是在数据库的实际操作中&#xff0c;经常会有需要多条 SQL 语句处理多个表才能完成的操作。例如&#xff0c;为了确认学生能否毕业&#xff0c;需要同时查询学生档案表、成绩…

什么是机房UPS?一文带您了解!

什么是机房UPS? 机房UPS是指专门为机房等大型计算机设施设计的不间断电源。它通常由高性能的电池组、充电器、逆变器、静态开关、监控系统和管理软件等组成&#xff0c;能够为计算机设备提供稳定、可靠的电源保障。 机房UPS的作用 机房UPS的作用主要是两方面&#xff1a; 1…

【负载均衡式的在线oj(2.oj_server模块)】

&#x1f389;实战项目&#xff1a;负载均衡式在线OJ 博主主页&#xff1a;桑榆非晚ᴷ 博主能力有限&#xff0c;如果有出错的地方希望大家不吝赐教 给自己打气&#xff1a;成功没有快车道&#xff0c;幸福没有高速路。所有的成功&#xff0c;都来自不倦地努力和奔跑&#xf…