#!/bin/sh # ================================================================= # 🚀 Speedtest 全平台安装器 (自动同意协议版) # 核心升级: 安装“自动同意壳”,彻底告别输入 YES # ================================================================= VERSION="1.2.0" BASE_URL="https://install.speedtest.net/app/cli/ookla-speedtest-${VERSION}-linux" TMP_DIR="/tmp/speedtest_install" GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m' echo -e "${YELLOW}>>> 启动安装 (v${VERSION})...${NC}" # --- 0. 权限检测 --- SUDO="" if [ "$(id -u)" != "0" ]; then if command -v sudo >/dev/null 2>&1; then SUDO="sudo" echo -e "${YELLOW}ℹ️ 检测到非 Root 用户,将自动使用 sudo 提权...${NC}" else echo -e "${RED}❌ 错误:当前不是 Root 用户,且未找到 sudo 命令!${NC}"; exit 1 echo -e " 请切换到 Root 用户后再试。" exit 1 fi fi # --- 1. 架构与依赖 (简化版) --- ARCH=$(uname -m) case $ARCH in x86_64) URL="${BASE_URL}-x86_64.tgz" ;; aarch64) URL="${BASE_URL}-aarch64.tgz" ;; armv7l) URL="${BASE_URL}-armhf.tgz" ;; *) echo -e "${RED}❌ 不支持架构: $ARCH${NC}"; exit 1 ;; esac if command -v apk >/dev/null 2>&1; then # ImmortalWrt/Alpine if [ ! -f /lib/libgcompat.so.0 ] && [ ! -f /usr/lib/libgcompat.so.0 ]; then echo -e "${YELLOW}📦 安装兼容层 gcompat...${NC}" $SUDO apk add gcompat ca-certificates >/dev/null 2>&1 fi elif command -v opkg >/dev/null 2>&1; then # OpenWrt if [ ! -f /lib/libgcompat.so.0 ]; then echo -e "${YELLOW}📦 安装兼容层 gcompat...${NC}" $SUDO opkg update >/dev/null 2>&1 && $SUDO opkg install gcompat ca-certificates >/dev/null 2>&1 fi fi # --- 2. 下载与解压 --- mkdir -p $TMP_DIR && cd $TMP_DIR echo -e "${YELLOW}⬇️ 下载中...${NC}" # 这里是关键:自动判断工具,并且 wget 加上了 --no-check-certificate if command -v curl >/dev/null 2>&1; then curl -L -k -o speedtest.tgz "$URL" 2>/dev/null else wget --no-check-certificate -qO speedtest.tgz "$URL" fi if [ ! -f "speedtest.tgz" ]; then echo -e "${RED}❌ 下载失败${NC}"; exit 1; fi tar xzf speedtest.tgz 2>/dev/null # --- 3. 偷天换日:安装内核并制作外壳 --- echo -e "${YELLOW}🔨 正在配置自动执行脚本...${NC}" # 1. 先清理旧文件 $SUDO rm -f /usr/bin/speedtest /usr/bin/ookla-speedtest # 2. 安装真正的二进制文件 (重命名为 ookla-speedtest) $SUDO mv ./speedtest /usr/bin/ookla-speedtest $SUDO chmod +x /usr/bin/ookla-speedtest # 3. 制作“外壳”脚本 (这步是解决 YES 的关键) # 使用 tee 命令以支持 sudo 写入 echo '#!/bin/sh # Wrapper to auto-accept license exec /usr/bin/ookla-speedtest --accept-license --accept-gdpr "$@"' | $SUDO tee /usr/bin/speedtest > /dev/null $SUDO chmod +x /usr/bin/speedtest # 清理 cd /tmp && rm -rf $TMP_DIR echo -e "${GREEN}🎉 安装成功!已自动处理 License。${NC}" echo -e "----------------------------------------------------" echo -e "🚀 用法 (无需再输 YES):" echo -e " 1. 快速测速: ${YELLOW}speedtest${NC}" echo -e " 2. 列出节点: ${YELLOW}speedtest -L${NC} (查看附近服务器)" echo -e " 3. 指定测速: ${YELLOW}speedtest -s xxxxx${NC} (例如 speedtest -s 12345)" echo -e "----------------------------------------------------"