wsl 网络探究
省流: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 网络探究的更多相关文章
- 一次客户需求引发的K8S网络探究
前言 在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享! ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
- Linux网络底层收发探究【转】
转自:https://blog.csdn.net/davion_zhang/article/details/51536807 本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- ng-深度学习-课程笔记-12: 深度卷积网络的实例探究(Week2)
1 实例探究( Cast Study ) 这一周,ng对几个关于计算机视觉的经典网络进行实例分析,LeNet-5,AlexNet,VGG,ResNet,Inception. 2 经典网络( Class ...
- 小白探究UE4网络系列(一)、UE4网络基础类分析
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 捣鼓UE4也有两个多月了,从这儿开始,逐步探究UE4中经典的值复制,RPC两种同步方式.想要弄到其复制和调用的原 ...
- TKE 容器网络中的 ARP Overflow 问题探究及其解决之道
作者朱瑜坚,腾讯云后台开发工程师,熟悉 CNI 容器网络相关技术,负责腾讯云 TKE 的容器网络的构建和相关网络组件的开发维护工作,作为主力开发实现了 TKE 下一代容器网络方案. 1. 问题背景 1 ...
- Docker0网络及原理探究
个人观点:Docker网络通信在容器编排.集群部署中具有举足轻重的地位,(玩docker不懂docker0那就......玩不透哇)本篇分析Docker网络,并通过启动几个容器来探究Docker网络及 ...
- openstack-- neutron 二/三层网络实现探究
引出 Neutron 是openstack 中提供网络虚拟化的组件,根据二层网络的实现方式不同(即agent的不同),可以分为Linux bridge的方式,Openvswitch的方式.而且,lay ...
- 探究UE4网络系列(二)、UE4网络核心类分析
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 前面分析了网络核心的基础类Socket/BSDSocket/SocketSubsystem/SocketSubs ...
- Java网络编程探究|乐字节
大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程. 主要内容如下: 网络 网络分层 IP位置 端口port 网络编程 一. 网络 1.概念 网络即 ...
随机推荐
- 【翻译】Spring Security - 如何解决WebSecurityConfigurerAdapter类已被弃用的问题?
原文链接:Spring Security - How to Fix WebSecurityConfigurerAdapter Deprecated 原文作者:Nam Ha Minh 原文发表日期:20 ...
- Go语言核心36讲29
在上篇文章中,我们主要说的是互斥锁,今天我和你来聊一聊条件变量(conditional variable). 前导内容:条件变量与互斥锁 我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论.实际上, ...
- 【云原生 · Kubernetes】KubeVirt热迁移
[云原生 · Kubernetes]KubeVirt热迁移 检查节点和kubevirt状态 启用热迁移 创建虚拟机 在虚拟机上启动一个服务 迁移虚拟机 热迁移是KubeVirt支持的一个常见虚拟化特性 ...
- i春秋123
打开是个普普通通的登录窗口,下尝试根据提示12341234进行输入,发现不正确...可能1234是指步骤,然后查看源码 发现了绿色的提示信息,我们就根据提示试试打开user.php 打开是白板网页,源 ...
- 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才能 ...
- 批量删除多个相同格式内容的Excel表格的列
Sub Del_Col()Application.DisplayAlerts = FalseDim myFiles As StringDim myExcels As StringWith Applic ...
- Type Script 在流程设计器的落地实践
流程设计器项目介绍 从事过BPM行业的大佬必然对流程建模工具非常熟悉,做为WFMC三大体系结构模型中的核心模块,它是工作流的能力模型,其他模块都围绕工作流定义来构建. 成熟的建模工具通过可视化的操作界 ...
- Spring04:JdbcTemplate及事务控制(AOP、XML、注解)
今日内容 Spring中的JdbcTemplate 作业:Spring基于AOP的事务控制 Spring中的事务控制 基于XML的 基于注解的 一.JdbcTemplate 1.JdbcTemplat ...
- MyBatis01:框架概述、环境搭建及入门案例、自定义框架
课程介绍 第一天:mybatis的入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 自定义mybatis框架(目的:了解mybatis的执行细节) 第二天:mybatis基 ...
- TS编写发布订阅模式
interface PubSubType { events: { [key: string]: { name: string, once: boolean, cb: Function }[] } on ...