省流:wsl2能否固定ip地址? - 豆腐干的回答 - 知乎

https://www.zhihu.com/question/387747506/answer/2764445888

割---------------------------

因为长期饱受wsl修改地址的困扰,我打算使用脚本来同步wsl在bashrc文件中配置的代理服务器ip

首先需要检查wsl网络适配器的IP地址

利用python库查看网络的接口识别名,即使用netifaces这个库,文档中的示例是这样的:

>>> netifaces.interfaces()
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']

这个应该是linux的例子,windows的例子如下

查阅资料这个应该是windows下的guid查看网络适配器(NIC)命令如下:

PS C:\Users\xxx> wmic nicconfig get description,settingid
Description SettingID
Microsoft Kernel Debug Network Adapter {0D90B06D-1F33-423F-96B8-E1E9EA1AA9F5}
Intel(R) Wireless-AC 9560 160MHz {8A87D1BD-4A73-4997-8DCE-AF20EFB339BA}
Realtek Gaming GbE Family Controller {D3BED80F-C4EA-478A-9745-CDFC9B501305}
Microsoft Wi-Fi Direct Virtual Adapter {01D4FDBF-44D2-4016-B680-37192F214412}
Bluetooth Device (Personal Area Network) {E5EAE072-39BE-4A11-9185-4642591946E3}
Microsoft Wi-Fi Direct Virtual Adapter {6C5EF811-C554-4FA0-A840-6B585A9FAF42}
WAN Miniport (SSTP) {CC2E3F02-C30D-4BE1-B65A-08A6DC064F54}
WAN Miniport (IKEv2) {0F8CC9D6-D04E-4B7E-9079-1716D4AA5D9B}
WAN Miniport (L2TP) {BC92FC3D-9F53-4943-AA76-007E4004D6BD}
WAN Miniport (PPTP) {986E0301-1547-4DFC-ADD0-DEB4B83A0D0F}
WAN Miniport (PPPOE) {5B4E25CF-B6AA-4215-931A-10E9DA32D0E2}
WAN Miniport (IP) {711AB5EA-0D23-45DB-9D7F-5A5A7C40E3FC}
WAN Miniport (IPv6) {4CC1C638-3932-4F77-A62C-CD3BDBD8759D}
WAN Miniport (Network Monitor) {6DEF30ED-E921-43C6-9D99-EEF327B133F4}
Hyper-V Virtual Switch Extension Adapter {D592FA15-C07D-48FA-9C2C-22B2DF230575}
RAS Async Adapter {0128B919-E037-4983-A41C-1490D5BB88C5}

经过对比发现这里的guid和前面python库获得的guid并不完全对应,这里找不到wsl的网络适配器

下面我们利用ipconfig可以查看wsl所在的地址,然后对比python中获取的网络适配器接口的地址发现,python库中返回的数组中的最后一个元素,就是wsl的guid

对比:ipconfig和下面python获取的ip

import netifaces

for line in netifaces.interfaces():
print(netifaces.ifaddresses(line))

现在找到了wsl对应的guid,目前的问题就是guid是否会改变,能否在重启之后(也就是通常的ip地址改变之后)通过guid获取网卡的ip地址

尝试关闭wsl在powershell中输入以下命令

wsl --shutdown

接着在powershell中重启wsl,发现此时wsl的网络适配器ip没有变化,所以需要电脑重新启动

重新启动后发现整个网络适配器重新创建了,所以guid发生了改变。。。。

除了使用guid,还可以把ipconfig的内容放到python中进行解析,获取ip并做自动修改

python读取管道输入用这个

sys.stdin.read()

用python处理掩码和ip的运算需要对文件进行读写,但是shell好像不支持逻辑与运算,如果能够在shell脚本里读取python的输出就好了

shell里读取python输出是可以的,具体代码已经写好了,在文章开头的知乎链接里

还可以优化,未完待续

补充:wsl报错不可访问对象时

powershell 管理员权限输入

netsh winsock reset

wsl 网络探究的更多相关文章

  1. 一次客户需求引发的K8S网络探究

    前言 在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享! ...

  2. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  3. Linux网络底层收发探究【转】

    转自:https://blog.csdn.net/davion_zhang/article/details/51536807 本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  4. ng-深度学习-课程笔记-12: 深度卷积网络的实例探究(Week2)

    1 实例探究( Cast Study ) 这一周,ng对几个关于计算机视觉的经典网络进行实例分析,LeNet-5,AlexNet,VGG,ResNet,Inception. 2 经典网络( Class ...

  5. 小白探究UE4网络系列(一)、UE4网络基础类分析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 捣鼓UE4也有两个多月了,从这儿开始,逐步探究UE4中经典的值复制,RPC两种同步方式.想要弄到其复制和调用的原 ...

  6. TKE 容器网络中的 ARP Overflow 问题探究及其解决之道

    作者朱瑜坚,腾讯云后台开发工程师,熟悉 CNI 容器网络相关技术,负责腾讯云 TKE 的容器网络的构建和相关网络组件的开发维护工作,作为主力开发实现了 TKE 下一代容器网络方案. 1. 问题背景 1 ...

  7. Docker0网络及原理探究

    个人观点:Docker网络通信在容器编排.集群部署中具有举足轻重的地位,(玩docker不懂docker0那就......玩不透哇)本篇分析Docker网络,并通过启动几个容器来探究Docker网络及 ...

  8. openstack-- neutron 二/三层网络实现探究

    引出 Neutron 是openstack 中提供网络虚拟化的组件,根据二层网络的实现方式不同(即agent的不同),可以分为Linux bridge的方式,Openvswitch的方式.而且,lay ...

  9. 探究UE4网络系列(二)、UE4网络核心类分析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 前面分析了网络核心的基础类Socket/BSDSocket/SocketSubsystem/SocketSubs ...

  10. Java网络编程探究|乐字节

    大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程. 主要内容如下: 网络 网络分层 IP位置 端口port 网络编程 一. 网络 1.概念 网络即 ...

随机推荐

  1. 【翻译】Spring Security - 如何解决WebSecurityConfigurerAdapter类已被弃用的问题?

    原文链接:Spring Security - How to Fix WebSecurityConfigurerAdapter Deprecated 原文作者:Nam Ha Minh 原文发表日期:20 ...

  2. Go语言核心36讲29

    在上篇文章中,我们主要说的是互斥锁,今天我和你来聊一聊条件变量(conditional variable). 前导内容:条件变量与互斥锁 我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论.实际上, ...

  3. 【云原生 · Kubernetes】KubeVirt热迁移

    [云原生 · Kubernetes]KubeVirt热迁移 检查节点和kubevirt状态 启用热迁移 创建虚拟机 在虚拟机上启动一个服务 迁移虚拟机 热迁移是KubeVirt支持的一个常见虚拟化特性 ...

  4. i春秋123

    打开是个普普通通的登录窗口,下尝试根据提示12341234进行输入,发现不正确...可能1234是指步骤,然后查看源码 发现了绿色的提示信息,我们就根据提示试试打开user.php 打开是白板网页,源 ...

  5. OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2 / cairo.so.2

    解决办法 下载 gtk3-runtime-3.24.29-2021-04-29-ts-win64.exe后安装. 记得勾选添加bin目录到环境变量: 这样就不会缺失dll了,当然可能需要重启IDE才能 ...

  6. 批量删除多个相同格式内容的Excel表格的列

    Sub Del_Col()Application.DisplayAlerts = FalseDim myFiles As StringDim myExcels As StringWith Applic ...

  7. Type Script 在流程设计器的落地实践

    流程设计器项目介绍 从事过BPM行业的大佬必然对流程建模工具非常熟悉,做为WFMC三大体系结构模型中的核心模块,它是工作流的能力模型,其他模块都围绕工作流定义来构建. 成熟的建模工具通过可视化的操作界 ...

  8. Spring04:JdbcTemplate及事务控制(AOP、XML、注解)

    今日内容 Spring中的JdbcTemplate 作业:Spring基于AOP的事务控制 Spring中的事务控制 基于XML的 基于注解的 一.JdbcTemplate 1.JdbcTemplat ...

  9. MyBatis01:框架概述、环境搭建及入门案例、自定义框架

    课程介绍 第一天:mybatis的入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 自定义mybatis框架(目的:了解mybatis的执行细节) 第二天:mybatis基 ...

  10. TS编写发布订阅模式

    interface PubSubType { events: { [key: string]: { name: string, once: boolean, cb: Function }[] } on ...