win一键启动WSL并固定IP

Laughing
2021-07-27 / 0 评论 / 2,053 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月17日,已超过307天没有更新,若内容或图片失效,请留言反馈。

idea无法访问WSL中Nacos的解决办法一文中,我们介绍了通过nginx端口转发的方式访问WSL中安装的Nacos。但是,如果你又安装了Seata,你会发现用端口映射会报错,这个大家可以自己试一下。
其实,我们在使用WSL(我安装的Ubuntu 20.04)时,系统会给我们分配一个IP地址。
我们通过ifconfig命令可以查看IP地址。
所以,更好的方式,肯定是我们通过这个分配的内网IP进行访问。但是,问题又来了,我们每次重启WSL之后,系统会重新分配以下IP地址,这肯定不是我们想要的结果,不然每个项目光改IP都能疯。同时,每次重启我们如果都执行一边服务启动命令(比如打开ssh、打开nginx、打开mysql等)也比较崩溃。
基于此,我们可以设置一个批量命令,一方面启动WSL同时可以自动设置一个固定的IP并开启我们的一些服务。
新建一个.bat的文件,粘贴以下内容

@echo off
setlocal enabledelayedexpansion

::不管三七二十一先停掉可能在跑的wsl实例
wsl --shutdown ubuntu
::重新拉起来,并且用root的身份,启动服务
wsl -u root service ssh start
wsl -u root service nginx start
wsl -u root service mysql start


if !errorlevel! equ 0 (
    :: 看看我要的IP在不在
    wsl -u root ip addr | findstr "192.168.120.180" > nul
    if !errorlevel! equ 0 (
        echo wsl ip has set
    ) else (
        ::不在的话给安排上
        wsl -u root ip addr add 192.168.120.180/24 broadcast 192.168.120.0 dev eth0 label eth0:1
        echo set wsl ip success: 192.168.120.180
    )

    ::windows作为wsl的宿主,在wsl的固定IP的同一网段也给安排另外一个IP
    ipconfig | findstr "192.168.120.100" > nul
    if !errorlevel! equ 0 (
        echo windows ip has set
    ) else (
        netsh interface ip add address "vEthernet (WSL)" 192.168.120.100 255.255.255.0
        echo set windows ip success: 192.168.120.100
    )
)

wsl -u root nohup /root/nacos/bin/startup.sh -m standalone >log.out 2>1 &
wsl -u root nohup /root/seata/seata-server-1.4.2/bin/seata-server.sh >log.out 2>1 &
pause

然后右键管理员身份运行,这样,每次我们打开WSL时,就固定了IP地址,并且帮我们运行了服务。

0

评论 (0)

取消