跳转至内容
  • 版块
  • 最新
  • 热门
  • 用户
  • 友链
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

Clouodon Blog

Global Moderators

私有

Forum wide moderators

帖子


  • Rustdesk自托管中继服务端安装教程
    clouldonC clouldon

    下面就是 只安装 hbbs + hbbr 的简单版本。


    1)先看当前最新版本

    浏览器打开:

    https://github.com/rustdesk/rustdesk-server/releases/latest

    现在会跳到 1.1.15。

    2)在 Debian 上判断你的架构

    执行:

    dpkg --print-architecture
    

    记住输出结果。
    常见是 amd64 或 arm64。

    这里我只示范 amd64。
    如果你的输出不是 amd64,只需要把下面所有命令里的 amd64 换成你的架构名。

    3)创建下载目录

    执行:

    mkdir -p ~/rustdesk-server
    cd ~/rustdesk-server
    

    4)下载第一个包:hbbs

    将下面的1.1.15换成Latest的版本号
    执行:

    wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbs_1.1.15_amd64.deb
    

    5)下载第二个包:hbbr

    执行:

    wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbr_1.1.15_amd64.deb
    

    6)确认两个包已经下好了

    执行:

    ls -lh *.deb
    

    正常会看到这两个文件:

    • rustdesk-server-hbbs_1.1.15_amd64.deb
    • rustdesk-server-hbbr_1.1.15_amd64.deb

    7)开始安装

    先执行:

    sudo apt update
    

    然后依次安装:

    sudo dpkg -i rustdesk-server-hbbs_1.1.15_amd64.deb
    
    sudo dpkg -i rustdesk-server-hbbr_1.1.15_amd64.deb
    

    8)如果提示依赖问题,再补一次

    执行:

    sudo apt-get -f install -y
    

    9)检查服务是否已经就绪

    先检查:

    systemctl status rustdesk-hbbs --no-pager
    
    systemctl status rustdesk-hbbr --no-pager
    

    你希望看到的是:

    active (running)
    

    10)如果没运行,就手动启动

    执行:

    sudo systemctl start rustdesk-hbbs
    
    sudo systemctl start rustdesk-hbbr
    

    然后再检查一次:

    systemctl status rustdesk-hbbs --no-pager
    
    systemctl status rustdesk-hbbr --no-pager
    

    11)查看公钥

    执行:

    cat /var/lib/rustdesk-server/id_ed25519.pub
    

    把输出内容保存好。


    12)补充端口使用

    RustDesk 官方文档给出的核心端口是:

    • TCP 21114-21119

    • UDP 21116

    其中 最小可工作端口集合 是:

    • TCP 21115

    • TCP/UDP 21116

    • TCP 21117


    这些端口分别做什么官方链接


    到底该开哪些端口

    如果你只是部署 普通 OSS 自建服务器,最稳妥的做法是直接开放:

    • 21115/tcp

    • 21116/tcp

    • 21116/udp

    • 21117/tcp

    这是官方文档定义的最小可工作端口集合。


    如果你想少折腾、一步到位,也可以直接开放:

    • 21114-21119/tcp

    • 21116/udp


    如果你用 UFW,就这样放行端口,只开最小必需端口

    sudo ufw allow 21115/tcp
    sudo ufw allow 21116/tcp
    sudo ufw allow 21116/udp
    sudo ufw allow 21117/tcp
    

    如果你想一步全开官方建议范围

    sudo ufw allow 21114:21119/tcp
    sudo ufw allow 21116/udp
    

    12)客户端怎么填

    客户端里填:

    • ID 服务器:你的服务器 IP 或域名
    • Key:刚才看到的公钥
    • 中继服务器:同ID 服务器
    • API服务器:留空

    示例

    如果你的服务器 IP 是 1.2.3.4,那客户端里填:

    • ID 服务器:1.2.3.4
    • Key:粘贴 id_ed25519.pub 的内容
    • 中继服务器:ID 服务器
    • API服务器:留空

    13)如果服务异常,先看日志

    执行:

    journalctl -u rustdesk-hbbs -n 100 --no-pager
    
    journalctl -u rustdesk-hbbr -n 100 --no-pager
    

    也可以直接看文件:

    tail -n 50 /var/log/rustdesk-server/hbbs.log
    
    tail -n 50 /var/log/rustdesk-server/hbbr.log
    

    一句话记住

    先用 dpkg --print-architecture 看架构;
    然后把我示范里的 amd64 替换成你的架构;
    下载 GitHub release 的 2 个 .deb;
    安装后检查 rustdesk-hbbs 和 rustdesk-hbbr;
    最后读取 /var/lib/rustdesk-server/id_ed25519.pub 给客户端用。

    软件教程

  • 作为生活本身的哲学基础的操练
    clouldonC clouldon

    安稳代表着平淡,折腾生活追求刺激,活着的感觉

    哲学基础

  • Mumble 语音服务器搭建
    clouldonC clouldon

    所实践过的GPT可用的安装流程
    不使用 Docker 的 Mumble(Murmur)服务器完整搭建流程,以常见的 Linux(Ubuntu/Debian)为例,直接能用。


    🧱 一、准备环境

    推荐系统:

    • Ubuntu 20.04 / 22.04 / 24.04
    • Debian 11 / 12

    更新系统:

    sudo apt update && sudo apt upgrade -y
    

    📦 二、安装 Mumble 服务器(Murmur)

    直接用官方仓库:

    sudo apt install mumble-server -y
    

    安装过程中会问两个问题:

    1️⃣ 是否开机自启

    👉 选 Yes

    2️⃣ 设置 SuperUser 密码

    👉 设置一个管理员密码(很重要)


    ⚙️ 三、基础配置

    配置文件位置:

    /etc/mumble-server.ini
    

    编辑:

    sudo nano /etc/mumble-server.ini
    

    🔑 常用关键配置(建议改)

    # 监听端口(默认 64738)
    port=64738
    
    # 最大用户数
    users=50
    
    # 欢迎消息
    welcometext="欢迎来到我的语音服务器"
    
    # 带宽限制(单位 bit/s)
    bandwidth=72000
    
    # 是否允许匿名用户
    allowanonymous=true
    
    # 服务器名称
    registerName=My Mumble Server
    

    👉 保存退出(Ctrl+O → Enter)


    🔐 四、设置管理员密码(如果刚才没设)

    sudo murmurd -ini /etc/mumble-server.ini -supw yourpass
    

    🚀 五、启动服务

    sudo systemctl start murmurd
    

    开机自启(如果没选):

    sudo systemctl enable murmurd
    

    检查状态:

    sudo systemctl status murmurd
    

    🌐 六、开放端口(非常关键)

    Mumble 默认端口:

    • 64738 UDP(语音)
    • 64738 TCP(控制)

    如果你用 UFW:

    sudo ufw allow 64738/tcp
    sudo ufw allow 64738/udp
    sudo ufw reload
    

    如果是云服务器(阿里云 / AWS / GCP)
    👉 还要在安全组里放行端口


    🧪 七、连接测试

    客户端(Mumble)连接:

    地址: 你的服务器IP
    端口: 64738
    用户名: 随便
    

    管理员登录:

    • 用户名:SuperUser
    • 密码:你刚设的

    ⚡ 八、优化建议(进阶)

    1️⃣ 降低延迟

    bandwidth=128000
    

    2️⃣ 限制公网注册(防炸服)

    allowanonymous=false
    

    3️⃣ 只允许注册用户

    registerPassword=你的服务器密码
    

    🔒 九、安全建议(很重要)

    • 改默认端口(防扫描)
    • 禁止匿名(防骚扰)
    • 定期备份 /var/lib/mumble-server/

    🧠 补充:文件位置

    内容 路径
    配置文件 /etc/mumble-server.ini
    数据库 /var/lib/mumble-server/
    日志 /var/log/mumble-server/

    🧭 常见问题

    ❓ 连不上?

    • 80% 是端口没开(UDP!)
    • 云服务器安全组没放行

    ❓ 没声音?

    • 检查 UDP
    • NAT / 防火墙问题

    软件教程

  • 作为生活本身的哲学基础的操练
    clouldonC clouldon

    对于痛苦,主要亚文化的代价实在太大,也要认识到痛苦也是我们的一部分。

    哲学基础

  • 作为生活本身的哲学基础的操练
    clouldonC clouldon

    居然是推特吗,那很多了

    哲学基础

  • 作为生活本身的哲学基础的操练
    AestusyA Aestusy

    👍👍👍👍👍👍

    哲学基础

  • Linux自用命令脚本
    clouldonC clouldon

    Linux自用命令脚本

    speedtest测速

    sudo apt-get install curl && curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash && sudo apt-get install speedtest
    

    适用于Debian


    vkit工具箱 作者@vps.dance
    原文链接
    GitHub源码链接

    bash <(curl -Lso- https://sh.vps.dance/vkit.sh)
    

    国内机如果不能用, 可尝试切换镜像

     bash <(curl -Lso- https://sh.vps.dance/vkit.sh) ghproxy
    
    VKit 提供Linux VPS常用的系统软件安装, 以及系统优化脚本, 目前集成功能如下.
    
    配置SSH Public Key (SSH免密登录)
    终端优化 (颜色美化/上下键查找历史)
    安装并开启 BBR
    系统优化 (TCP网络优化/资源限制优化)
    安装常用软件 (ping/traceroute/nslookup/nping/nc/tcpdump)
    修改默认SSH端口 (减少被扫描风险)
    增加swap分区 (虚拟内存)
    IPv4/IPv6优先级调整, 启用/禁用IPv6
    安装 Xray (同时安装 增强版的geosite/geoip规则)
    安装 SS
    安装 snell
    安装 hy2
    安装 realm (端口转发工具)
    安装 gost (隧道/端口转发工具)
    安装 nali (IP查询工具)
    安装 ddns-go (DDNS工具)
    安装 miniserve (HTTP 文件服务器)
    使用 CF WARP 添加 IPv4/IPv6 网络
    检测 VPS流媒体解锁 (RegionRestrictionCheck)
    检测 单线程/多线程网速 (i-abc/Speedtest)
    检测 VPS信息/IO/到国际网速 (Bench.sh)
    性能/IO 测试 (YABS)
    检测 TCP回程路由 (BestTrace)
    检测 TCP回程路由 (NextTrace)
    检测 Tiktok解锁 (TikTokCheck)
    检测 IP质量 (IPQuality)
    理论支持的Linux: Ubuntu/Debian, Centos/Redhat (未做严格测试).
    
    软件教程

  • ppp_install.sh
    clouldonC clouldon

    PPP 安装与管理脚本

    这是一个用于安装、配置、更新和管理 openppp2 服务的 Bash 脚本。脚本需要 root 权限才能执行,并提供菜单驱动的界面来执行各种操作。


    自动(半自动):一键脚本,仅支持 x86

    wget -4 -O ppp_install.sh https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh && chmod +x ppp_install.sh && ./ppp_install.sh 
    

    GitHub优化加速

    wget -4 -O ppp_install.sh https://git.apad.pro/https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh && chmod +x ppp_install.sh && ./ppp_install.sh 
    

    脚本内容

    #!/bin/bash
    # =============================================================================
    # openppp2 一键安装脚本(v3.6 智能最优版)
    # 自动检测架构 + tc + io-uring + simd,选择最佳版本
    # =============================================================================
    
    set -o pipefail
    
    # ==================== 颜色定义 ====================
    RED='\033[31m'
    GREEN='\033[32m'
    YELLOW='\033[33m'
    BLUE='\033[34m'
    RESET='\033[0m'
    
    print() { echo -e "${2:-$GREEN}$1${RESET}"; }
    
    # ==================== 创建 ppp 快捷命令 ====================
    create_ppp_shortcut() {
        if [ ! -f "/usr/local/bin/ppp" ]; then
            cat > /usr/local/bin/ppp << 'EOF'
    #!/bin/bash
    if [ -f "/root/ppp_install.sh" ]; then
        bash /root/ppp_install.sh
    else
        echo "❌ 脚本文件不存在,请重新下载"
        echo "wget -4 -O /root/ppp_install.sh https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
        echo "chmod +x /root/ppp_install.sh"
    fi
    EOF
            chmod +x /usr/local/bin/ppp
            print "✅ 已创建 ppp 快捷命令!以后直接输入 ppp 即可运行" $GREEN
        else
            print "✅ ppp 快捷命令已存在" $GREEN
        fi
    }
    
    # ==================== 系统能力检测 ====================
    has_aesni() {
        grep -q 'aes' /proc/cpuinfo 2>/dev/null
    }
    
    kernel_supports_io_uring() {
        local major=$(uname -r | cut -d. -f1)
        local minor=$(uname -r | cut -d. -f2)
        [ "$major" -gt 5 ] || { [ "$major" -eq 5 ] && [ "$minor" -ge 1 ]; }
    }
    
    has_tc() {
        command -v tc >/dev/null 2>&1
    }
    
    # ==================== 自动选择最优版本 ====================
    choose_best_zip() {
        local arch=$(uname -m)
        case "$arch" in
            x86_64|amd64)
                if kernel_supports_io_uring && has_aesni && has_tc; then
                    echo "openppp2-linux-amd64-tc-io-uring-simd.zip"
                elif kernel_supports_io_uring && has_aesni; then
                    echo "openppp2-linux-amd64-tc-io-uring-simd.zip"
                elif kernel_supports_io_uring && has_tc; then
                    echo "openppp2-linux-amd64-tc-io-uring.zip"
                elif has_aesni && has_tc; then
                    echo "openppp2-linux-amd64-tc-simd.zip"
                elif has_tc; then
                    echo "openppp2-linux-amd64-tc.zip"
                else
                    echo "openppp2-linux-amd64.zip"
                fi
                ;;
            aarch64|arm64)
                if kernel_supports_io_uring && has_tc; then
                    echo "openppp2-linux-aarch64-tc-io-uring.zip"
                else
                    echo "openppp2-linux-aarch64.zip"
                fi
                ;;
            armv7l|armv7)
                if kernel_supports_io_uring; then
                    echo "openppp2-linux-armv7l-io-uring.zip"
                else
                    echo "openppp2-linux-armv7l.zip"
                fi
                ;;
            mips|mipsel)   echo "openppp2-linux-mipsel.zip" ;;
            ppc64le|ppc64el) echo "openppp2-linux-ppc64el.zip" ;;
            riscv64)       echo "openppp2-linux-riscv64.zip" ;;
            s390x)         echo "openppp2-linux-s390x.zip" ;;
            *)
                print "❌ 不支持的架构: $arch" $RED
                exit 1
                ;;
        esac
    }
    
    # ==================== 下载函数 ====================
    prompt_replace_file() {
        local target_path="$1"
        local url="$2"
        local desc="$3"
    
        mkdir -p "$(dirname "$target_path")"
    
        if [ -f "$target_path" ]; then
            print "⚠️  $desc 已存在" $YELLOW
            read -p "是否替换?(y/n,默认 n): " REPLACE
            if [[ ! "$REPLACE" =~ ^[Yy]$ ]]; then return 0; fi
        fi
    
        print "📥 正在下载 $desc ..." $BLUE
        if wget -4 --no-check-certificate -q --show-progress -O "$target_path" "$url"; then
            print "✅ $desc 下载完成" $GREEN
            return 0
        else
            print "❌ 下载失败!" $RED
            return 1
        fi
    }
    
    # ==================== 主菜单 ====================
    while true; do
        clear
        print "=============== openppp2 一键脚本(v3.6 智能版)===============" $BLUE
        echo "1) 服务端 - 完整自动安装(推荐,自动最优版本)"
        echo "2) 服务端 - 配置系统服务(自行修改配置后使用)"
        echo "3) 通用 - 更新二进制文件(自动最优版本)"
        echo "4) 通用 - 重启服务"
        echo "5) 通用 - 停止服务"
        echo "6) 通用 - 查看运行状态(日志前50行)"
        echo "7) 通用 - 完全卸载"
        echo "8) 设置 ppp 快捷命令"
        echo "9) 更新本脚本"
        echo "10) 退出"
        read -p "请输入选项 [1-10]: " OPERATION
    
        case $OPERATION in
            1|3)
                print "🌍 是否使用国内加速代理 (git.apad.pro)?" $BLUE
                read -p "输入 y 使用加速,n 直连 (默认 y): " USE_PROXY
                if [[ "$USE_PROXY" =~ ^[Nn]$ ]]; then
                    GITHUB_PROXY=""
                    print "✅ 使用直连 GitHub" $YELLOW
                else
                    GITHUB_PROXY="https://git.apad.pro/"
                    print "✅ 已启用国内加速代理" $GREEN
                fi
    
                ZIP_NAME=$(choose_best_zip)
                print "🔍 自动选择最优版本:$ZIP_NAME" $BLUE
    
                mkdir -p /opt/ppp && cd /opt/ppp
    
                URL="${GITHUB_PROXY}https://github.com/liulilittle/openppp2/releases/latest/download/${ZIP_NAME}"
                prompt_replace_file "/opt/ppp/${ZIP_NAME}" "$URL" "$ZIP_NAME" || continue
    
                unzip -o "$ZIP_NAME" ppp -d . && chmod +x ppp && rm -f "$ZIP_NAME"
                print "✅ openppp2 最优版本处理完成" $GREEN
    
                if [ "$OPERATION" = "1" ]; then
                    print "🔧 正在安装依赖..." $BLUE
                    if command -v apt-get >/dev/null; then
                        apt-get update && apt-get install -y jq uuid-runtime unzip
                    elif command -v dnf >/dev/null; then
                        dnf install -y jq util-linux unzip
                    elif command -v yum >/dev/null; then
                        yum install -y jq util-linux unzip
                    else
                        print "❌ 无法识别包管理器,请手动安装 jq uuid-runtime unzip" $RED
                        continue
                    fi
                    print "✅ 依赖安装完成" $GREEN
    
                    prompt_replace_file "/opt/ppp/ppp.sh" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.sh" "ppp.sh" || continue
                    chmod +x ppp.sh
    
                    read -p "是否自行修改 appsettings.json?(y/n,默认 n): " SELF
                    if [[ "$SELF" =~ ^[Yy]$ ]]; then
                        print "请手动修改 /opt/ppp/appsettings.json 后,运行选项 2" $YELLOW
                        create_ppp_shortcut
                        continue
                    fi
    
                    prompt_replace_file "/opt/ppp/appsettings.json" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/appsettings.json" "appsettings.json" || continue
    
                    read -p "服务器 IP(默认 0.0.0.0): " NEW_IP
                    read -p "端口(默认 20000): " NEW_PORT
                    read -p "GUID(留空自动生成): " NEW_GUID
    
                    NEW_IP=${NEW_IP:-0.0.0.0}
                    NEW_PORT=${NEW_PORT:-20000}
                    [[ -z "$NEW_GUID" ]] && NEW_GUID=$(uuidgen)
    
                    PROTOCOL_KEY=$(tr -dc 'a-zA-Z0-9' </dev/urandom | head -c 16)
                    TRANSPORT_KEY=$(tr -dc 'a-zA-Z0-9' </dev/urandom | head -c 16)
    
                    cp -f appsettings.json appsettings.json.bak 2>/dev/null
    
                    jq --indent 4 \
                        --arg ip "$NEW_IP" --arg port "$NEW_PORT" --arg guid "$NEW_GUID" \
                        --arg pkey "$PROTOCOL_KEY" --arg tkey "$TRANSPORT_KEY" '
                        .tcp.listen.port = ($port|tonumber) |
                        .udp.listen.port = ($port|tonumber) |
                        .udp.static.servers[0] = ($ip + ":" + $port) |
                        .client.server = ("ppp://" + $ip + ":" + $port) |
                        .client.guid = $guid |
                        .key."protocol-key" = $pkey |
                        .key."transport-key" = $tkey
                    ' appsettings.json > temp.json && mv temp.json appsettings.json
    
                    prompt_replace_file "/etc/systemd/system/ppp.service" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.service" "ppp.service" || continue
    
                    chmod 644 /etc/systemd/system/ppp.service
                    systemctl daemon-reload
                    systemctl enable --now ppp.service
    
                    if systemctl is-active --quiet ppp.service; then
                        print "🎉 安装成功!服务已启动" $GREEN
                        create_ppp_shortcut
                    else
                        print "⚠️ 服务启动失败,请检查日志" $YELLOW
                    fi
                fi
                ;;
    
            2)
                if [ ! -f "/opt/ppp/appsettings.json" ]; then
                    print "❌ 未找到 appsettings.json,请先运行选项 1" $RED
                    continue
                fi
                cd /opt/ppp || { print "❌ /opt/ppp 目录不存在" $RED; continue; }
    
                prompt_replace_file "/etc/systemd/system/ppp.service" \
                    "${GITHUB_PROXY:-https://git.apad.pro/}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.service" \
                    "ppp.service" || continue
    
                systemctl daemon-reload && systemctl enable --now ppp.service
                print "✅ 系统服务配置完成并启动" $GREEN
                ;;
    
            4) systemctl restart ppp.service && print "✅ 服务已重启" $GREEN ;;
            5) systemctl stop ppp.service && print "✅ 服务已停止" $GREEN ;;
            6)
                print "=== ppp.log(前 50 行)===" $BLUE
                if [ -f "/opt/ppp/ppp.log" ]; then
                    head -n 50 /opt/ppp/ppp.log
                else
                    print "日志文件不存在" $YELLOW
                fi
                echo
                print "=== ppp.service 状态 ===" $BLUE
                systemctl status ppp.service --no-pager -l
                ;;
            7)
                print "🗑️ 开始卸载..." $YELLOW
                systemctl stop ppp.service 2>/dev/null
                systemctl disable ppp.service 2>/dev/null
                rm -f /etc/systemd/system/ppp.service
                systemctl daemon-reload
    
                print "是否保留配置文件?(默认保留)" $BLUE
                read -p "输入 y 保留(默认),n 删除: " KEEP_CONFIG
                if [[ "$KEEP_CONFIG" =~ ^[Nn]$ ]]; then
                    rm -rf /opt/ppp
                    print "✅ 已删除所有文件" $GREEN
                else
                    rm -f /opt/ppp/ppp /opt/ppp/ppp.sh /opt/ppp/openppp2-linux-*.zip 2>/dev/null
                    print "✅ 已保留配置文件" $GREEN
                fi
                rm -f /usr/local/bin/ppp
                print "✅ 卸载完成" $GREEN
                exit 0
                ;;
            8)
                create_ppp_shortcut
                ;;
            9)
                print "🌍 更新本脚本 - 请选择方式" $BLUE
                echo "1) 使用国内加速 (推荐)"
                echo "2) 直连 GitHub"
                read -p "请输入 [1-2](默认 1): " UPDATE_MODE
                if [ "$UPDATE_MODE" = "2" ]; then
                    UPDATE_URL="https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
                else
                    UPDATE_URL="https://git.apad.pro/https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
                fi
                print "📥 正在下载最新脚本..." $BLUE
                wget -4 -O /root/ppp_install.sh "$UPDATE_URL" && chmod +x /root/ppp_install.sh
                if [ $? -eq 0 ]; then
                    print "✅ 脚本更新成功!正在重新启动..." $GREEN
                    exec /root/ppp_install.sh
                else
                    print "❌ 更新失败" $RED
                fi
                ;;
            10)
                print "👋 退出脚本" $GREEN
                exit 0
                ;;
            *)
                print "❌ 无效选项" $RED
                ;;
        esac
    
        echo
        read -p "按 Enter 键返回主菜单..."
    done
    软件教程 openppp2

成员列表

clouldonC clouldon
AestusyA Aestusy
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
Powered by Clouldon Contributors
萌ICP备20251430号
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 热门
  • 用户
  • 友链