很多代理工具只是设置了浏览器,终端和git都没有开启代理,输入命令行太麻烦,所以可以用这个脚本设置、检测和取消。
使用方法
1、创建一个文件
文件名proxy_tool.sh
,下面是脚本内容
#!/bin/bash
# 修改为你自己使用的 shell 配置文件
SHELL_CONFIG="$HOME/.zshrc" # 如果你用 bash,请改为 ~/.bashrc
# 代理地址配置
SOCKS5_PROXY="socks5://127.0.0.1:1089"
HTTP_PROXY="http://127.0.0.1:8889"
set_proxy() {
echo "选择代理类型:"
echo "1. SOCKS5 (127.0.0.1:1089)"
echo "2. HTTP (127.0.0.1:8889)"
read -p "请输入选项 [1/2]: " proxy_type
if [ "$proxy_type" == "1" ]; then
PROXY=$SOCKS5_PROXY
elif [ "$proxy_type" == "2" ]; then
PROXY=$HTTP_PROXY
else
echo "❌ 无效选择"
exit 1
fi
export http_proxy=$PROXY
export https_proxy=$PROXY
export all_proxy=$PROXY
echo "✅ 当前终端代理已设置为: $PROXY"
read -p "💾 是否将代理写入配置文件以永久生效?(y/n): " yn
if [[ "$yn" =~ ^[Yy]$ ]]; then
echo -e "\n# [Added by proxy_tool]" >> "$SHELL_CONFIG"
echo "export http_proxy=$PROXY" >> "$SHELL_CONFIG"
echo "export https_proxy=$PROXY" >> "$SHELL_CONFIG"
echo "export all_proxy=$PROXY" >> "$SHELL_CONFIG"
echo "✅ 已写入,请执行 source ~/.zshrc 以生效"
fi
# 设置 Git 代理
set_git_proxy
}
unset_proxy() {
unset http_proxy
unset https_proxy
unset all_proxy
echo "✅ 当前终端代理已取消"
read -p "🧹 是否同时从配置文件中清除代理?(y/n): " yn
if [[ "$yn" =~ ^[Yy]$ ]]; then
sed -i '' '/# \[Added by proxy_tool\]/,+3d' "$SHELL_CONFIG"
echo "✅ 已从 $SHELL_CONFIG 中移除代理设置"
fi
# 取消 Git 代理
unset_git_proxy
}
set_git_proxy() {
echo "设置 Git 代理..."
git config --global http.proxy $http_proxy
git config --global https.proxy $https_proxy
echo "✅ Git 代理已设置为: $http_proxy"
}
unset_git_proxy() {
echo "取消 Git 代理..."
git config --global --unset http.proxy
git config --global --unset https.proxy
echo "✅ Git 代理已取消"
}
check_proxy() {
echo "🔍 检查当前终端代理设置..."
if [ -z "$http_proxy" ] && [ -z "$https_proxy" ] && [ -z "$all_proxy" ]; then
echo "❌ 当前没有设置代理"
else
echo "✅ 当前代理设置如下:"
echo "http_proxy: $http_proxy"
echo "https_proxy: $https_proxy"
echo "all_proxy: $all_proxy"
fi
# 检查 Git 代理设置
git_http_proxy=$(git config --global --get http.proxy)
git_https_proxy=$(git config --global --get https.proxy)
if [ -z "$git_http_proxy" ] && [ -z "$git_https_proxy" ]; then
echo "❌ Git 没有设置代理"
else
echo "✅ Git 代理设置:"
echo "Git http.proxy: $git_http_proxy"
echo "Git https.proxy: $git_https_proxy"
fi
echo ""
echo "🌐 正在检测公网 IP..."
ip=$(curl -s --max-time 5 ifconfig.me)
country=$(curl -s --max-time 5 https://ipapi.co/$ip/country_name/)
echo "当前 IP: $ip"
echo "归属地: $country"
if [[ "$country" != "China" && "$country" != "中国" ]]; then
echo "✅ 当前网络似乎在使用 VPN/代理"
else
echo "❌ 当前网络似乎没有使用 VPN 或使用的是国内代理"
fi
}
view_proxy_params() {
echo "🔍 查看当前代理设置的详细参数..."
# 显示所有代理环境变量
echo "http_proxy: $http_proxy"
echo "https_proxy: $https_proxy"
echo "all_proxy: $all_proxy"
# 检查 Git 代理设置
git_http_proxy=$(git config --global --get http.proxy)
git_https_proxy=$(git config --global --get https.proxy)
if [ -z "$git_http_proxy" ] && [ -z "$git_https_proxy" ]; then
echo "❌ Git 没有设置代理"
else
echo "✅ Git 代理设置:"
echo "Git http.proxy: $git_http_proxy"
echo "Git https.proxy: $git_https_proxy"
fi
echo ""
echo "🌐 正在检测公网 IP..."
ip=$(curl -s --max-time 5 ifconfig.me)
country=$(curl -s --max-time 5 https://ipapi.co/$ip/country_name/)
echo "当前 IP: $ip"
echo "归属地: $country"
if [[ "$country" != "China" && "$country" != "中国" ]]; then
echo "✅ 当前网络似乎在使用 VPN/代理"
else
echo "❌ 当前网络似乎没有使用 VPN 或使用的是国内代理"
fi
}
show_menu() {
echo "========= 终端代理工具 ========="
echo "1. 设置代理"
echo "2. 取消代理"
echo "3. 检查代理状态"
echo "4. 查看代理参数"
echo "5. 退出"
echo "================================"
}
while true; do
show_menu
read -p "请选择操作 [1-5]: " choice
case $choice in
1) set_proxy ;;
2) unset_proxy ;;
3) check_proxy ;;
4) view_proxy_params ;;
5) echo "👋 Bye~"; exit 0 ;;
*) echo "❌ 无效选项,请重新输入" ;;
esac
echo ""
done
2、设置权限
将该脚本文件权限设置为可运行,可在终端命令执行
chmod +x proxy_tool.sh
3、运行脚本
在终端执行
./proxy_tool.sh
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/1382.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!