1. 创建脚本
以下步骤需要 Root 权限。
1.1 创建脚本文件
打开终端,使用 vim
创建脚本文件:
sudo vim /usr/bin/proxy
将以下脚本内容填入文件中(请确保第四行的 port
使用您实际的代理端口号)。
#!/bin/bash
# 获取 WSL 网络配置
output=$(ipconfig.exe)
# 转换字符编码为 UTF-8
output=$(echo "$output" | iconv -f GBK -t UTF-8)
# 获取虚拟网卡的 IPv4 地址
hostip=$(echo "$output" | grep -A 4 "vEthernet (WSL (Hyper-V firewall))" | grep "IPv4 地址" | awk '{print $NF}' | tr -d '\r\n')
# 设置代理端口 (请根据实际情况修改端口号)
port=7897
# 定义 HTTP 和 SOCKS5 代理
PROXY_HTTP="http://${hostip}:${port}"
PROXY_SOCKS5="socks5://${hostip}:${port}"
# 设置代理函数
set_proxy() {
# 设置环境变量
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTP}"
export HTTPS_PROXY="${PROXY_HTTP}"
# 设置 git 代理
git config --global http.proxy "${PROXY_SOCKS5}"
git config --global https.proxy "${PROXY_SOCKS5}"
echo "代理设置成功!"
}
# 取消代理函数
unset_proxy() {
# 清除环境变量
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
# 清除 git 配置中的代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
echo "代理已取消!"
}
# 测试当前设置的代理
test_setting() {
echo "主机 IP: ${hostip}"
echo "当前 HTTP 代理: $http_proxy"
echo "当前 HTTPS 代理: $https_proxy"
echo "Git 配置的代理: $(git config --global --get http.proxy)"
}
# 根据传入的参数执行不同的操作
case "$1" in
"set")
set_proxy
;;
"unset")
unset_proxy
;;
"test")
test_setting
;;
*)
echo "无效的参数,请使用 'set', 'unset' 或 'test'."
;;
esac
1.2 说明
- 代理端口: 请根据您的实际代理端口修改
port=7897
。如果您使用的是其他端口,记得修改这一行。 - IP 地址获取: 脚本通过
ipconfig.exe
获取 Windows 系统中的虚拟网卡(vEthernet (WSL (Hyper-V firewall))
)的 IP 地址,并提取出 IPv4 地址。 - 代理配置:
http_proxy
和https_proxy
环境变量会被设置为与 WSL 虚拟网卡绑定的代理地址。而 Git 的 HTTP 和 HTTPS 代理会通过git config
设置。
1.3 创建并保存脚本
完成脚本编写后,保存并退出 Vim 编辑器。
2. 授予脚本可执行权限
在终端中运行以下命令,赋予脚本执行权限:
sudo chmod +x /usr/bin/proxy
3. 使用脚本设置代理
3.1 设置代理
要启用代理,执行以下命令:
proxy set
此命令会根据脚本中的配置,自动设置 HTTP 和 HTTPS 代理环境变量,并配置 Git 的代理设置。
3.2 取消代理
如果您需要取消代理设置,可以执行以下命令:
proxy unset
该命令会清除所有代理设置,包括环境变量和 Git 配置。
3.3 测试代理设置
如果您想查看当前的代理设置,可以执行以下命令:
proxy test
该命令将显示当前的代理设置,包括主机的 IP 地址以及 Git 配置的代理。
4. 小贴士
- 端口号修改: 请根据您实际使用的代理端口号修改脚本中的
port=7897
。 - 代理生效范围: 本脚本会影响当前终端会话中的环境变量和 Git 配置,其他会话需要重新执行相应命令。
- Windows 与 WSL: 脚本假设您在 Windows 上运行 WSL (Windows Subsystem for Linux),并且代理端口和 IP 地址是动态获取的。