技术文章

写一个Linux启用禁用代理脚本 proxy.sh / bash代理
技术文章 2026-08-29 1 阅读

写一个Linux启用禁用代理脚本 proxy.sh / bash代理

小泥巴 小泥巴科技 2026-08-29

为了方便使用,我编写了一个多功能 Bash 脚本。它可以一键开启、关闭代理,并支持临时生效(当前终端)和持久化生效(写入配置文件)。

1. 代理管理脚本 (proxy.sh)[1][2]

你可以将以下代码保存为 proxy.sh

#!/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 "[√] 代理已开启 (当前会话)"
    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 "[x] 代理已禁用 (当前会话)"
}

# 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"
        ;;
esac


2. 如何使用

由于环境变量是在 Shell 进程中运行的,直接执行脚本(./proxy.sh)无法改变当前终端的变量。你必须使用 [6][7][8]

  1. 保存脚本:将代码保存为 ~/proxy.sh

source ~/proxy.sh on
source ~/proxy.sh off
source ~/proxy.sh status


相关标签:

发表评论:

评论记录:

未查询到任何数据!
QQ咨询
回电话
回拨通话

我们稍后回拨您的电话

座机请加区号

微信联系
微信扫一扫
微信二维码

扫码加微信