平时在使用终端时,有时会遇到需要临时设置终端代理的情况(电脑主机开启代理,默认情况下终端不会生效),但是输入下面两行代码又相对麻烦一点(特别是在使用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 文件中添加几个函数使用起来更方便一些