Created
June 27, 2025 22:39
-
-
Save dragon-fish/dd2f2be5b8b98c8e89d0b9214bf99faa to your computer and use it in GitHub Desktop.
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 | |
| set -e | |
| # ============================= | |
| # 参数与配置 | |
| # ============================= | |
| MONGOSH_FALLBACK_VERSION="2.5.1" | |
| MONGOTOOLS_FALLBACK_VERSION="100.12.1" | |
| # ============================= | |
| # 函数定义 | |
| # ============================= | |
| log() { | |
| echo -e "🔧 $1" | |
| } | |
| error() { | |
| echo -e "❌ $1" >&2 | |
| exit 1 | |
| } | |
| require_root() { | |
| if [ "$EUID" -ne 0 ]; then | |
| error "请使用 root 用户运行此脚本。" | |
| fi | |
| } | |
| install_packages() { | |
| log "安装必要依赖..." | |
| if command -v apt >/dev/null 2>&1; then | |
| apt update -y | |
| apt install -y wget curl tar gnupg lsb-release | |
| elif command -v yum >/dev/null 2>&1; then | |
| yum install -y wget curl tar gnupg redhat-lsb-core | |
| elif command -v dnf >/dev/null 2>&1; then | |
| dnf install -y wget curl tar gnupg redhat-lsb-core | |
| else | |
| error "不支持的包管理器。" | |
| fi | |
| } | |
| download_file() { | |
| local url="$1" | |
| local output="${2:-$(basename "$url")}" | |
| log "下载文件:$url" | |
| curl -fLo "$output" --retry 3 --retry-delay 2 "$url" || error "下载失败:$url" | |
| } | |
| detect_platform() { | |
| if [ -f /etc/os-release ]; then | |
| . /etc/os-release | |
| case "$ID" in | |
| ubuntu|debian) echo "debian10" ;; | |
| centos|rhel|amzn) echo "rhel70" ;; | |
| *) echo "rhel70" ;; | |
| esac | |
| else | |
| echo "rhel70" | |
| fi | |
| } | |
| install_mongosh() { | |
| log "开始安装 mongosh..." | |
| ARCH=$(uname -m) | |
| [ "$ARCH" != "x86_64" ] && error "当前架构 $ARCH 不支持,仅支持 x86_64。" | |
| MONGOSH_LATEST=$(curl -s https://www.mongodb.com/try/download/shell | grep -oP 'mongosh-linux-x64-\K[0-9.]+(?=\.tgz)' | head -n 1) | |
| [ -z "$MONGOSH_LATEST" ] && MONGOSH_LATEST="$MONGOSH_FALLBACK_VERSION" | |
| log "使用 mongosh 版本:$MONGOSH_LATEST" | |
| local url="https://downloads.mongodb.com/compass/mongosh-${MONGOSH_LATEST}-linux-x64.tgz" | |
| download_file "$url" | |
| tar -xzf "mongosh-${MONGOSH_LATEST}-linux-x64.tgz" | |
| install -m 755 "mongosh-${MONGOSH_LATEST}-linux-x64/bin/mongosh" /usr/local/bin/ | |
| log "✅ mongosh 安装完成" | |
| } | |
| install_dbtools() { | |
| log "开始安装 MongoDB Database Tools..." | |
| local platform | |
| platform=$(detect_platform) | |
| TOOLS_LATEST=$(curl -s https://www.mongodb.com/try/download/database-tools | grep -oP "mongodb-database-tools-${platform}-x86_64-\K[0-9.]+" | head -n 1 | sed 's/\.$//') | |
| [ -z "$TOOLS_LATEST" ] && TOOLS_LATEST="$MONGOTOOLS_FALLBACK_VERSION" | |
| log "使用 MongoDB Database Tools 版本:$TOOLS_LATEST" | |
| local url="https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${platform}-x86_64-${TOOLS_LATEST}.tgz" | |
| download_file "$url" | |
| tar -xzf "mongodb-database-tools-${platform}-x86_64-${TOOLS_LATEST}.tgz" | |
| install -m 755 "mongodb-database-tools-${platform}-x86_64-${TOOLS_LATEST}/bin/"* /usr/bin/ | |
| log "✅ MongoDB Database Tools 安装完成" | |
| } | |
| verify_versions() { | |
| echo -e "\n📦 安装完成,版本验证如下:" | |
| echo "mongosh version:" | |
| mongosh --version | |
| echo "mongodump version:" | |
| mongodump --version | |
| } | |
| # ============================= | |
| # 脚本主流程 | |
| # ============================= | |
| require_root | |
| TMP_DIR=$(mktemp -d) | |
| trap 'rm -rf "$TMP_DIR"' EXIT | |
| log "创建临时目录:$TMP_DIR" | |
| cd "$TMP_DIR" | |
| install_packages | |
| install_mongosh | |
| install_dbtools | |
| verify_versions |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment