使用python实现windows、WSL2 IP转发

工作没有Mac,日常就是使用WSL2来开发,但和对接的前端突然说访问不到我的项目端口了,百思不得其解,网上找了很多办法,就是使用“netsh interface portproxy add v4tov4 listenport=3310 listenaddress=0.0.0.0 connectport=3310 connectaddress=wsl ip”进行ip和端口转发,可是每次这么做就麻烦,现在使用python在windows上跑powershell命令行。

1.写python代码

import subprocess
# subprocess模块用来在终端跑命令的
import re

# bash.exe -c "ifconfig eth0 | grep 'inet'"命令是获取wsl的ip地址
cv = subprocess.check_output('''bash.exe -c "ifconfig eth0 | grep 'inet'"''',
            shell=True)
# 结果是二进制字节转化为字符串,可以用re表达式提取ip了
ip = re.search("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", str(cv,'utf-8')).group()

获取ip之后,就可以跑转发命令了

def start(ip):
	# 这里存放需要转发的端口
    port = [80, 443, 3310, 8000, 6000]
    for x in port:
        subprocess.run(
            f"netsh interface portproxy add v4tov4 listenport={x} listenaddress=0.0.0.0 connectport={x} connectaddress={ip}",
            shell=True)
    print("绑定成功......")
    
bn = start(ip)
# 最后再运行命令查看是否转发成功。就ok了。
subprocess.run("netsh interface portproxy show all", shell=True)

接下来就可以使用python3 文件.py自动转发ip和端口了。
。。。
再精简一下。

2.写powershell脚本和bat文件

新建记事本文件
写以下代码

iex "python e:/Desktop/***/ipnet.py";

然后另存为.ps1文件,例如ipnet.ps1
再将该文件放到某个已经在环境变量里的某个路径下,比如,我的“D:\Program Files”这个路径已经在环境变量里了,我就直接放在这个路径下了,即可使用ipnet命令手动执行。

新建记事本文件
写以下代码

@echo off
start powershell python e:/Desktop/***/ipnet.py

重命名为.bat文件

3.最后

重启终端,输入ipnet,按下回车。
在这里插入图片描述
效果如上,这就可以了。
当然你也可以做成开机自启动的。
本人不会powershell语言,所以是用python来写的。

4.设置开机自启动

  1. 按住win+R键,弹出运行窗口,输入shell:startup,就会打开存放开机启动项的文件夹。
  2. 将前面的.bat文件粘贴到1步骤打开的文件夹中。如果安全软件报危险,同意就可以了,自己写的,靠谱。
  3. 在任务管理器->启动那一栏就能看到刚添加的启动项了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值