我是靠谱客的博主 激动西牛,最近开发中收集的这篇文章主要介绍使用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. 在任务管理器->启动那一栏就能看到刚添加的启动项了。

最后

以上就是激动西牛为你收集整理的使用python实现windows、WSL2 IP转发的全部内容,希望文章能够帮你解决使用python实现windows、WSL2 IP转发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部