技术文章
2026-08-29
1 阅读
写一个Linux启用禁用代理脚本 proxy.sh / bash代理
为了方便使用,我编写了一个多功能 Bash 脚本。它可以一键开启、关闭代理,并支持临时生效(当前终端)和持久化生效(写入配置文件)。
1. 代理管理脚本 (proxy.sh)[1][2]
#!/bin/bash
# --- 配置区域 ---
# 请根据你的代理服务器实际情况修改
PROXY_HOST="127.0.0.1"
PROXY_PORT="7890"
PROXY_USER="" # 如果有用户名,请填写
PROXY_PASS="" # 如果有密码,请填写
# 排除代理的地址
NO_PROXY_LIST="localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,::1"
# 构造代理字符串
if [ -z "$PROXY_USER" ]; then
PROXY_URL="http://$PROXY_HOST:$PROXY_PORT"
else
PROXY_URL="http://$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT"
fi
# --- 功能函数 ---
# 1. 开启当前 Shell 的代理
enable_proxy() {
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
export ftp_proxy="$PROXY_URL"
export rsync_proxy="$PROXY_URL"
export all_proxy="socks5://$PROXY_HOST:$PROXY_PORT" # 如果是 SOCKS 代理
export no_proxy="$NO_PROXY_LIST"
# 同时也设置大写版本(部分软件仅识别大写)
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export FTP_PROXY="$ftp_proxy"
export RSYNC_PROXY="$rsync_proxy"
export ALL_PROXY="$all_proxy"
export NO_PROXY="$no_proxy"
echo -e "[32m[√] 代理已开启 (当前会话)[0m"
echo "Proxy URL: $PROXY_URL"
}
# 2. 关闭当前 Shell 的代理
disable_proxy() {
unset http_proxy https_proxy ftp_proxy rsync_proxy all_proxy no_proxy
unset HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY ALL_PROXY NO_PROXY
echo -e "[31m[x] 代理已禁用 (当前会话)[0m"
}
# 3. 检查当前状态
status_proxy() {
if [ -z "$http_proxy" ]; then
echo "当前状态: 未设置代理"
else
echo "当前状态: 代理已开启"
echo "http_proxy=$http_proxy"
fi
}
# --- 脚本逻辑 ---
case "$1" in
on)
enable_proxy
;;
off)
disable_proxy
;;
status)
status_proxy
;;
*)
echo "用法: source proxy.sh [on|off|status]"
echo "示例: source proxy.sh on"
;;
esac2. 如何使用
保存脚本:将代码保存为 ~/proxy.sh。
source ~/proxy.sh on source ~/proxy.sh off source ~/proxy.sh status