Created
June 8, 2026 13:47
-
-
Save NNdroid/ad987c48e85e40b434d7d35be30b8951 to your computer and use it in GitHub Desktop.
mproxy installer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # mproxy-mod 一键安装与卸载脚本 | |
| # 支持架构: Linux amd64 (x86_64) | |
| set -e | |
| # 全局变量 | |
| BIN_URL="https://github.com/NNdroid/mproxy-mod/raw/refs/heads/main/mproxy" | |
| BIN_PATH="/usr/local/bin/mproxy" | |
| SERVICE_PATH="/etc/systemd/system/mproxy.service" | |
| # 环境检查 | |
| check_env() { | |
| # 检查 root 权限 | |
| if [[ $EUID -ne 0 ]]; then | |
| echo "❌ 错误: 此脚本需要 root 权限执行。请使用 sudo 或 root 账户运行。" | |
| exit 1 | |
| fi | |
| # 检查架构 | |
| local arch | |
| arch=$(uname -m) | |
| if [[ "$arch" != "x86_64" ]]; then | |
| echo "❌ 错误: 仅支持 amd64 (x86_64) 架构。当前系统架构为: $arch" | |
| exit 1 | |
| fi | |
| } | |
| # 安装逻辑 | |
| install_mproxy() { | |
| check_env | |
| echo "==> 开始安装 mproxy..." | |
| # 1. 下载二进制程序 | |
| echo " -> 正在下载二进制文件..." | |
| if command -v curl >/dev/null 2>&1; then | |
| curl -L -o "$BIN_PATH" "$BIN_URL" | |
| elif command -v wget >/dev/null 2>&1; then | |
| wget -O "$BIN_PATH" "$BIN_URL" | |
| else | |
| echo "❌ 错误: 系统未找到 curl 或 wget,请先安装其中之一。" | |
| exit 1 | |
| fi | |
| # 赋予执行权限 | |
| chmod +x "$BIN_PATH" | |
| echo " -> 二进制文件已下载并赋予执行权限: $BIN_PATH" | |
| # 2. 写入 systemd 服务文件 | |
| echo " -> 正在配置 systemd 服务..." | |
| cat > "$SERVICE_PATH" << 'EOF' | |
| [Unit] | |
| Description=mproxy Service | |
| After=network-online.target | |
| Wants=network-online.target | |
| [Service] | |
| Type=simple | |
| ExecStart=/usr/local/bin/mproxy -l 80 -m Sheep: -r 127.0.0.1:22222 | |
| Restart=always | |
| RestartSec=5s | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| # 3. 启动并设置开机自启 | |
| echo " -> 重载 systemd 守护进程并启动服务..." | |
| systemctl daemon-reload | |
| systemctl enable mproxy.service | |
| systemctl start mproxy.service | |
| echo "==> ✅ 安装成功!" | |
| echo "可以使用以下命令检查运行状态: systemctl status mproxy" | |
| } | |
| # 卸载逻辑 | |
| uninstall_mproxy() { | |
| # 仅检查 root,卸载时不需要检查架构 | |
| if [[ $EUID -ne 0 ]]; then | |
| echo "❌ 错误: 此操作需要 root 权限执行。" | |
| exit 1 | |
| fi | |
| echo "==> 开始卸载 mproxy..." | |
| # 1. 停止并禁用服务 | |
| if systemctl is-active --quiet mproxy.service; then | |
| echo " -> 停止 mproxy 服务..." | |
| systemctl stop mproxy.service | |
| fi | |
| if systemctl is-enabled --quiet mproxy.service 2>/dev/null; then | |
| echo " -> 禁用 mproxy 开机自启..." | |
| systemctl disable mproxy.service | |
| fi | |
| # 2. 删除相关文件 | |
| # 采用独立路径逐一移除,避免双引号包裹导致 bash 大括号扩展失效 | |
| echo " -> 清理系统文件..." | |
| if [[ -f "$SERVICE_PATH" ]]; then | |
| rm -f "$SERVICE_PATH" | |
| fi | |
| if [[ -f "$BIN_PATH" ]]; then | |
| rm -f "$BIN_PATH" | |
| fi | |
| # 3. 重载 systemd | |
| systemctl daemon-reload | |
| echo "==> ✅ 卸载完成!mproxy 已从系统中彻底移除。" | |
| } | |
| # 命令行入口 | |
| case "$1" in | |
| install) | |
| install_mproxy | |
| ;; | |
| uninstall) | |
| uninstall_mproxy | |
| ;; | |
| *) | |
| echo "用法: $0 {install|uninstall}" | |
| exit 1 | |
| ;; | |
| esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment