这两天使用wsl2,感觉性能不错,有个美中不足的问题就是linux客户机的ip是经过主机虚拟网卡dhcp的,并且还是不固定的!每次启动都会变!。。。。这产品也是没治了。
后来发现了一个映射端口的方法,https://github.com/yhl452493373/WSL2-Auto-Port-Forward.git
原理就是使用wsl命令,先获取到客户机的ip,然后再用使用netsh创建端口映射。其实有个点解决的不是很完美,就是需要先把getIP.sh上传到客户机,然后在windows下通过wsl调用才能获得客户端ip,这就比较啰嗦了。
研究了一下,联想到android的方法,先把文件上传到tmp目录,于是就试了一下:
::wsl -l -v
set linuxName=openSUSE-Leap-15-1
copy getIp.sh \\wsl$\openSUSE-Leap-15-1\tmp > nul
wsl -d openSUSE-Leap-15-1 -u root chmod +x /tmp/getIp.sh
for /F %%i in ('wsl -d %linuxName% -u root /tmp/getIp.sh') do ( set wslIp=%%i)
其中关键点:
通过\\wsl$\{Name}直接访问虚拟机,用copy命令把文件 复制到虚拟机的tmp目录,别的目录可能权限都不够,然后把文件设置成可执行权限,通过wsl执行getIp.sh脚本获取ip地址。
然后后面的流程就和原来脚本一样了,后面可能还有个问题,原脚本使用的ip是0.0.0.0,可能有问题,最好还是直接使用主机的ip,但是这个不确定。
最后通过 netsh interface portproxy show all 可以查看商品映射情况。