省流: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. OpenFeign

    OpenFeign-服务间的调用 一.什么是Feign和OpenFeign? 在使用Feign或者OpenFeign前,服务之间的调用路径在函数内部设置: 能不能像controller调用servic ...

  2. Rust构建环境搭建

    ###安装涉及的概念rustup : 安装rust和管理版本的工具,当前rust尚处于发展阶段,存在三种类型的版本,稳定版.测试版.每日构建版本,使用rustup可以在这三种的版本之间切换,默认是稳定 ...

  3. (GCC) gcc 编译选项 -fno-omit-frame-pointer,-fno-tree-vectorize,fno-optimize-sibling-calls;及内存泄漏、非法访问检测 ASAN

    omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试 ...

  4. POST请求发送的表单数据和json数据的区别及python代码实现

    前言 这篇博客会介绍最常见post 请求form表单数据和json数据 数据类型之间的区别, urllib代码的实现(python), requests库实现, 以及如何使用postman软件发送这些 ...

  5. 探讨Morest在RESTful API测试的行业实践

    摘要:在本文中,我们将重点探讨使用自动化智能化Morest测试技术在RESTful API测试的行业实践. 本文分享自华为云社区<[智能化测试专题]华为云API智能测试工具--Morest测试框 ...

  6. JUC面试点汇总

    JUC面试点汇总 我们会在这里介绍我所涉及到的JUC相关的面试点内容,本篇内容持续更新 我们会介绍下述JUC的相关面试点: 线程状态 线程池 Wait和Sleep Synchronized和Lock ...

  7. 【每日一题】【动态规划】2022年2月22日-NC59 矩阵的最小路径和

    描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和. 例如:当输入[[1,3,5,9], ...

  8. 【每日一题】【DFS】【BFS】【队列】2021年12月5日-199. 二叉树的右视图

    解答: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...

  9. 多线程/GIL全局锁

    目录 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器 验证GIL存在 同一个进程下多线程是否有优势 死锁现象 信号量 Event事件 线程理论 进程 进程其实是资源单位 标示开辟一块内 ...

  10. 如何使用 IdGen 生成 UID

    在分布式系统中,雪花 ID 是一种常用的唯一 ID 生成算法.它通过结合时间戳.机器码和自增序列来生成 64 位整数 ID,可以保证 ID 的唯一性和顺序性. 在.Net 项目中,我们可以使用 IdG ...