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

目录
  • 获取多网卡配置
  • 动态切换静态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地址内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python制作Windows按键通知脚本

    目录 前言 1.准备 2.源码使用与解析 2.1 源码使用 2.2 源码分析 3.扩展触发通知 前言 对于键盘没有背光灯的同学而言,切换大小写或控制Num键开关的时候没有提示,经常需要试探性地输入一些字符来判断开关是否打开,体验非常糟糕. 因此,有人就想到自制脚本这一招,一旦触发大小写切换或Num键切换就进行windows通知提示: https://github.com/skate1512/Toggle_Keys_Notification 今天我们来试试这个脚本,此外,我们还可以基于这个项目,扩

  • python在windows调用svn-pysvn的实现

    作为EBS开发人员,开发工具用的多,部署代码类型多,管理程序麻烦,操作繁琐,一直是我最讨厌的事情.部署一次程序要使用好几个工具,改来改去,上传下载,实在难受. 扣了一下python,打算做一款集成工具,把代码管理.程序部署一步搞下来.中间有几个技术难点需要打通: 1. ERP调用linux的ssh执行shell获得源代码,下载到本机 2. 将源代码结构化存储并放到svn下,上传svn同步版本 3. 调用Jenkins执行部署,将源代码部署到正式环境 4. 该操作步骤做记录留底 现在测试的就是py

  • windows环境下python连接openGauss数据库的全过程

    目录 一.python 介绍 二.Python下载及安装 三.openGauss Connectors (Psycopg2) 介绍 四.openGauss Connectors (Psycopg2)下载并初始化 五.连接并访问openGauss数据库 六.问题总结(FAQ) 总结 一.python 介绍 python最新版 windows python是款面向对象.直译式计算机程序设计语言,同时也是一种功能强大而完善的通用型语言,具有非常简洁而清晰的语法特点,适合完成各种高层任务,几乎可以在所有

  • Python实现删除windows下的长路径文件

    目录 1.文章背景 2.使用 python 删除文件 3.文件系统关于长路径文件的相关定义 4.改造 python 程序,删除长路径文件 5.总结思考 1.文章背景 近期,笔者所在公司的某业务系统的存储临近极限,服务器马上就要跑不动了,由于该业务系统A包含多个子系统A1.A2.A3 ... An,这些子系统的中间存储文件由于设计原因,都存储在同一个父级目录之内,唯一不同的是,不同子系统产生的文件和文件夹的名字都以该子系统名开始.如A1子系统产生的文件命名方式均为A1xxxxxx, A2子系统产生

  • python读取Windows注册表的示例代码

    运行结果 代码 import winreg def read_reg(): location = r"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" # 获取注册表该位置的所有键值 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, location) print("\n" + "-"*100 + "\

  • 使用批处理命令设置windows系统的ip地址和dns附图

    找到对应的网卡名称 使用命令:ipconfig 复制代码 代码如下: ipconfig/all Windows IP Configuration Host Name . . . . . . . . . . . . : D501-4-3 Primary Dns Suffix . . . . . . . : Node Type . . . . . . . . . . . . : Unknown IP Routing Enabled. . . . . . . . : No WINS Proxy Ena

  • python在windows和linux下获得本机本地ip地址方法小结

    本文实例总结了python在windows和linux下获得本机本地ip地址方法.分享给大家供大家参考.具体分析如下: python的socket包含了丰富的函数和方法可以获得本机的ip地址信息,socket对象的gethostbyname方法可以根据主机名获得本机ip地址,socket对象的gethostbyname_ex方法可以获得本机所有ip地址列表 第一种方法:通过socket.gethostbyname方法获得 import socket localIP = socket.gethos

  • python批量生成本地ip地址的方法

    本文实例讲述了python批量生成本地ip地址的方法.分享给大家供大家参考.具体分析如下: 这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- # Filename: AddIPAliases.py import re,sys,socket,struct # 1. 判断IP地址是否合法: 2. 判断用户输入的IP是否在Clas

  • vue中如何获取本地IP地址

    目录 获取本地IP地址 1.在浏览器中 2.在vue文件中,实现如下 获取本地内网IP 获取本地IP地址 IP地址需要通过js获取: 网上有很多查询接口可以获取到IP,查到的搜狐的比较多,我这里就用搜狐的: http://pv.sohu.com/cityjson?ie=utf-8 1.在浏览器中 直接输入这个地址,就可以获取到ip信息: 2.在vue文件中,实现如下 (1)在config/index.js中 proxyTable:{ } ,在里面添加代理规则 '/api': { target:

  • JS动态修改iframe内嵌网页地址的方法

    本文实例讲述了JS动态修改iframe内嵌网页地址的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码通过修改iframe的src属性动态修改iframe的内嵌网页 <!DOCTYPE html> <html> <head> <script> function changeSrc() { document.getElementById("myframe").src="http://google.com"; }

  • Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开和关闭,IP地址获取等等,早期的Android版本甚至支持对于IP的设置.在这里仅介绍其简单的一个小应用--获取IP地址. 首先先添加Uses-Permission:CHANGE_WIFI_STATE,WAKE_LOCK和ACCESS_WIFI_STATE.代码如下(AndroidManifest.

  • c# 获得本地ip地址的三种方法

    网上有很多种方法可以获取到本地的IP地址.一线常用的有这么些: 枚举本地网卡 using System.Net.NetworkInformation; using System.Net.Sockets; foreach (NetworkInterface netif in NetworkInterface.GetAllNetworkInterfaces() .Where(a => a.SupportsMulticast) .Where(a => a.OperationalStatus == O

  • 基于Java实现获取本地IP地址和主机名

    方式一:通过java.net.InetAddress类获取 public void test1() { try { InetAddress addr = InetAddress.getLocalHost(); System.out.println("IP地址:" + addr.getHostAddress() + ",主机名:" + addr.getHostName()); } catch (UnknownHostException e) { e.printStac

  • windows服务器指定IP地址才能进行远程访问桌面设置方法

    一般情况下分两种方法: 第一种是通过 防火墙来实现 等保测评要求:对服务器限制远程终端登录地址 于是有了:对于某一个服务器,要限定特定IP对其进行访问的需求. 因为存在:Windows server 2003.2008.2012及Linux这几种主流服务器. 我们分不同服务器来描述. Windows server 2003 1.Win键+R键,输入 Control 打开控制面板 2.找到 windows防火墙 3.常规选项卡中,选择 启用 4. 例外选项卡中,勾选 远程桌面-选中,点编辑-勾选T

  • ASP.NET jQuery 实例10 动态修改hyperlink的URL值

    1.先准备界面代码: 复制代码 代码如下: <form id="form1" runat="server"> <div align="left"> <fieldset style="width: 300px; height: 200px;"> <table cellpadding="0" cellspacing="0" border="

随机推荐