终端(WSL)便捷设置代理小工具

平时在使用终端时,有时会遇到需要临时设置终端代理的情况(电脑主机开启代理,默认情况下终端不会生效),但是输入下面两行代码又相对麻烦一点(特别是在使用WSL的情况下,如果要用代理要不就安装个桌面然后装个UI版代理软件、要不就直接装个终端版代理软件、要不就使用windows主机的代理软件【设置代理为主机代理端口就行】)。

export http_proxy=http://ip:port
export https_proxy=http://ip:port
# 下面代码是设置代理为本地7897端口
# export http_proxy=http://127.0.0.1:7897
# export https_proxy=http://127.0.0.1:7897

需要取消时要不手动输入unset命令(如下代码),要不关闭当前终端窗口另开一个终端窗口,相对麻烦一些。

unset http_proxy
unset https_proxy

因为最近平时需要用到代理的情况多一些,嫌弃这样弄有点麻烦,就想让管理当前终端代理方便些,弄了两个方案,一个是写个脚本文件、另一个是在~/.bashrc文件中添加几个函数

一、先查看主机的ip地址

(WSL需要,linux一般直接设置本地的代理端口就行了)

# 在 WSL 中查看网关
ip route show default

我的是 172.20.48.1

二、利用脚本文件

2.1 保存到 ~/proxy_manager.sh(自定义)
#!/bin/bash

# 代理管理脚本

# 代理配置
PROXY_HOST="172.20.48.1"	#代理ip
PROXY_PORT="7997"	#端口
PROXY_URL="http://${PROXY_HOST}:${PROXY_PORT}"

# 颜色定义
MAGENTA='\033[0;35m'     # 品红色
CYAN='\033[0;36m'        # 青色
BRIGHT_GREEN='\033[1;32m' # 亮绿色
BRIGHT_RED='\033[1;31m'   # 亮红色
BRIGHT_YELLOW='\033[1;33m' # 亮黄色
BRIGHT_BLUE='\033[1;34m'   # 亮蓝色
BRIGHT_MAGENTA='\033[1;35m' # 亮品红色
BRIGHT_CYAN='\033[1;36m'    # 亮青色
PURPLE='\033[0;35m'        # 紫色
NC='\033[0m' # No Color

# 检查代理状态
check_proxy_status() {
    if [[ -n "$http_proxy" ]] && [[ -n "$https_proxy" ]]; then
        echo -e "${BRIGHT_GREEN}✓ 代理已开启${NC} (${CYAN}$http_proxy${NC})"
        return 0
    else
        echo -e "${BRIGHT_RED}✗ 代理已关闭${NC}"
        return 1
    fi
}

# 开启代理
enable_proxy() {
    export http_proxy="$PROXY_URL"
    export https_proxy="$PROXY_URL"
    export HTTP_PROXY="$PROXY_URL"
    export HTTPS_PROXY="$PROXY_URL"
    export no_proxy="localhost,127.0.0.1,::1"
    export NO_PROXY="localhost,127.0.0.1,::1"
    
    echo -e "${BRIGHT_GREEN}✓ 代理已开启${NC} (${CYAN}$PROXY_URL${NC})"
}

# 关闭代理
disable_proxy() {
    unset http_proxy
    unset https_proxy
    unset HTTP_PROXY
    unset HTTPS_PROXY
    unset no_proxy
    unset NO_PROXY
    
    echo -e "${BRIGHT_GREEN}✓ 代理已关闭${NC}"
}

# 显示菜单
show_menu() {
    echo ""
    echo -e "${BRIGHT_CYAN}════════════════════════════════${NC}"
    echo -e "${BRIGHT_MAGENTA}当前代理状态:${NC}"
    check_proxy_status
    echo -e "${BRIGHT_CYAN}════════════════════════════════${NC}"
    echo -e "${BRIGHT_MAGENTA}请选择操作:${NC}"
    echo ""
    echo -e "  ${PURPLE}1)${NC} 开启代理"
    echo -e "  ${PURPLE}2)${NC} 关闭代理"
    echo -e "  ${PURPLE}3)${NC} 显示当前代理设置"
    echo -e "  ${PURPLE}4)${NC} 退出"
    echo -e "${BRIGHT_CYAN}════════════════════════════════${NC}"
    echo ""
    echo -e -n "${BRIGHT_MAGENTA}请输入选项 [1-4]: ${NC}"
}

# 显示当前代理设置
show_proxy_settings() {
    echo ""
    echo -e "${BRIGHT_CYAN}当前环境变量:${NC}"
    echo -e "  ${MAGENTA}http_proxy:${NC}  ${http_proxy:-${BRIGHT_RED}未设置${NC}}"
    echo -e "  ${MAGENTA}https_proxy:${NC} ${https_proxy:-${BRIGHT_RED}未设置${NC}}"
    echo -e "  ${MAGENTA}HTTP_PROXY:${NC}  ${HTTP_PROXY:-${BRIGHT_RED}未设置${NC}}"
    echo -e "  ${MAGENTA}HTTPS_PROXY:${NC} ${HTTPS_PROXY:-${BRIGHT_RED}未设置${NC}}"
    echo -e "  ${MAGENTA}no_proxy:${NC}    ${no_proxy:-${BRIGHT_RED}未设置${NC}}"
    echo -e "  ${MAGENTA}NO_PROXY:${NC}    ${NO_PROXY:-${BRIGHT_RED}未设置${NC}}"
}

# 主函数
main() {
    while true; do
        show_menu
        read -r choice
        
        case $choice in
            1)
                echo ""
                enable_proxy
                return 0
                ;;
            2)
                echo ""
                disable_proxy
                return 0
                ;;
            3)
                show_proxy_settings
                return 0
                ;;
            4)
                echo ""
                echo -e "${BRIGHT_GREEN}退出代理管理工具${NC}"
                return 0
                ;;
            *)
                echo ""
                echo -e "${BRIGHT_RED}无效选项,请重新选择${NC}"
                echo -e -n "${BRIGHT_YELLOW}按任意键继续...${NC}"
                read -n 1
                ;;
        esac
    done
}

# 检查运行方式
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    echo -e "${BRIGHT_RED}错误: 请使用以下方式运行脚本以使代理设置生效:${NC}"
    echo -e "${BRIGHT_CYAN}source $0${NC}"
    echo -e "${BRIGHT_CYAN}或者${NC}"
    echo -e "${BRIGHT_CYAN}. $0${NC}"
    exit 1
else
    main
fi
2.2 效果如下图所示

三、在 ~/.bashrc 文件添加几个函数

2.1 添加下面代码到 ~/.bashrc 文件中
proxy_on() {
    export http_proxy="http://172.20.48.1:7997"
    export https_proxy="http://172.20.48.1:7997"
    export ALL_PROXY="http://172.20.48.1:7997"
    echo "代理已启用: $ALL_PROXY"
}

proxy_off() {
    unset http_proxy
    unset https_proxy
    unset ALL_PROXY
    unset HTTP_PROXY
    unset HTTPS_PROXY
    echo "代理已关闭"
}

proxy_status() {
    if [ -n "$ALL_PROXY" ]; then
        echo "当前代理状态: 已启用 - $ALL_PROXY"
    else
        echo "当前代理状态: 未启用"
    fi
}
2.2 执行
source ~/.bashrc
2.3 效果图

个人体验

注意:两种方案都需要在代理软件中允许局域网连接

个人感觉还是直接在 ~/.bashrc 文件中添加几个函数使用起来更方便一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值