From 5fa6e805788488521628b83167eac36ec019f637 Mon Sep 17 00:00:00 2001 From: "sundapeng.sdp" Date: Fri, 19 Sep 2025 15:09:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20FTP=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=A6=BB?= =?UTF-8?q?=E7=BA=BF=E5=AE=89=E8=A3=85=E5=8F=8A=E9=85=8D=E7=BD=AE=EF=BC=9B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=87=87=E9=9B=86=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=80=E9=94=AE=E9=83=A8=E7=BD=B2=E3=80=81?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=A0=A1=E9=AA=8C=E3=80=81=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5=E3=80=81=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E7=AD=89=E5=8A=9F=E8=83=BD=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #3 --- .../client-plugins/demo-all-in-one/README.md | 8 +- .../demo-all-in-one/install-argus-metric.sh | 221 ----- .../demo-all-in-one/install_artifact.sh | 60 +- .../demo-all-in-one/publish_artifact.sh | 81 +- .../client-plugins/demo-all-in-one/setup.sh | 862 ++++++++++++++++++ .../deps/vsftpd_3.0.5-0ubuntu1.1_amd64.deb | Bin 0 -> 122660 bytes src/metric/ftp/vsftpd-config-README.md | 111 +++ src/metric/ftp/vsftpd-offline-install.sh | 49 + 8 files changed, 1136 insertions(+), 256 deletions(-) delete mode 100644 src/metric/client-plugins/demo-all-in-one/install-argus-metric.sh create mode 100644 src/metric/client-plugins/demo-all-in-one/setup.sh create mode 100644 src/metric/ftp/deps/vsftpd_3.0.5-0ubuntu1.1_amd64.deb create mode 100644 src/metric/ftp/vsftpd-config-README.md create mode 100755 src/metric/ftp/vsftpd-offline-install.sh diff --git a/src/metric/client-plugins/demo-all-in-one/README.md b/src/metric/client-plugins/demo-all-in-one/README.md index 67808a8..39baf4b 100644 --- a/src/metric/client-plugins/demo-all-in-one/README.md +++ b/src/metric/client-plugins/demo-all-in-one/README.md @@ -46,12 +46,16 @@ node-exporter-installer /path/to/node-exporter-installer 1.1.0 - 压缩版本的安装包 - 一键安装的bash脚本 -## 第四步:部署到FTP服务器 +## 第四步:部署到FTP服务器(详见 FTP 搭建) 把发布的内容上传到FTP服务器,客户端就可以通过一键命令安装: ```bash -curl -fsSL http://your-ftp-server/install.sh | sh - +curl -u user:passwd ftp://server_ip/setup.sh -o setup.sh + +chmod +x setup.sh + +sudo ./setup.sh --server server_ip --user user --password passwd ``` 这样客户就能直接从FTP服务器下载并安装组件了。 \ No newline at end of file diff --git a/src/metric/client-plugins/demo-all-in-one/install-argus-metric.sh b/src/metric/client-plugins/demo-all-in-one/install-argus-metric.sh deleted file mode 100644 index 0e40d9f..0000000 --- a/src/metric/client-plugins/demo-all-in-one/install-argus-metric.sh +++ /dev/null @@ -1,221 +0,0 @@ -#!/bin/bash - -set -e - -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# 日志函数 -log_info() { - echo -e "${BLUE}[INFO]${NC} $1" -} - -log_success() { - echo -e "${GREEN}[SUCCESS]${NC} $1" -} - -log_warning() { - echo -e "${YELLOW}[WARNING]${NC} $1" -} - -log_error() { - echo -e "${RED}[ERROR]${NC} $1" -} - -# 配置变量 -DEFAULT_VERSION="1.20.0" -BASE_URL="https://releases.yourdomain.com/argus-metric" -TEMP_DIR="/tmp/argus-metric-install-$$" - -# 解析参数 -VERSION="$DEFAULT_VERSION" -ACTION="install" - -while [[ $# -gt 0 ]]; do - case $1 in - --version) - VERSION="$2" - shift 2 - ;; - --uninstall) - ACTION="uninstall" - shift - ;; - --help) - echo "Argus Metric 在线安装脚本" - echo - echo "用法: curl -sfL https://install-argus-metric.yourdomain.com | sh -s -- [选项]" - echo - echo "选项:" - echo " --version VERSION 指定版本 (默认: $DEFAULT_VERSION)" - echo " --uninstall 卸载" - echo " --help 显示帮助" - echo - echo "示例:" - echo " curl -sfL https://install-argus-metric.yourdomain.com | sh -" - echo " curl -sfL https://install-argus-metric.yourdomain.com | sh -s -- --version 1.20.0" - echo " curl -sfL https://install-argus-metric.yourdomain.com | sh -s -- --uninstall" - exit 0 - ;; - *) - log_error "未知参数: $1" - echo "使用 --help 查看帮助信息" - exit 1 - ;; - esac -done - -# 清理函数 -cleanup() { - if [[ -d "$TEMP_DIR" ]]; then - rm -rf "$TEMP_DIR" - fi -} - -trap cleanup EXIT - -# 检查是否为 root 用户 -check_root() { - if [[ $EUID -ne 0 ]]; then - log_error "此脚本需要 root 权限运行" - log_info "请使用: sudo curl -sfL https://install-argus-metric.yourdomain.com | sh -" - exit 1 - fi -} - -# 检查系统要求 -check_system() { - log_info "检查系统要求..." - - # 检查操作系统 - if [[ ! -f /etc/os-release ]]; then - log_error "无法检测操作系统版本" - exit 1 - fi - - source /etc/os-release - log_info "检测到操作系统: $NAME $VERSION" - - # 检查系统架构 - arch=$(uname -m) - log_info "系统架构: $arch" - - # 检查磁盘空间 - available_space=$(df / | awk 'NR==2 {print $4}') - if [[ $available_space -lt 10485760 ]]; then # 10GB in KB - log_warning "可用磁盘空间不足 10GB,当前可用: $(($available_space / 1024 / 1024))GB" - fi -} - -# 下载并安装 -install_argus_metric() { - log_info "开始安装 Argus Metric v$VERSION..." - - # 创建临时目录 - mkdir -p "$TEMP_DIR" - cd "$TEMP_DIR" - - # 下载发布包 - TAR_NAME="argus-metric-$VERSION.tar.gz" - log_info "下载发布包: $TAR_NAME" - if ! curl -sfL "$BASE_URL/$TAR_NAME" -o "$TAR_NAME"; then - log_error "下载发布包失败: $BASE_URL/$TAR_NAME" - exit 1 - fi - - # 解压发布包 - log_info "解压发布包..." - if ! tar -xzf "$TAR_NAME"; then - log_error "解压发布包失败" - exit 1 - fi - - # 进入解压目录 - cd "argus-metric-$VERSION" - - # 执行安装 - log_info "执行安装..." - if [[ -f "install_artifact.sh" ]]; then - chmod +x install_artifact.sh - if ./install_artifact.sh; then - log_success "Argus Metric v$VERSION 安装完成!" - else - log_error "安装失败" - exit 1 - fi - else - log_error "未找到安装脚本 install_artifact.sh" - exit 1 - fi -} - -# 卸载 -uninstall_argus_metric() { - log_info "开始卸载 Argus Metric..." - - # 创建临时目录 - mkdir -p "$TEMP_DIR" - cd "$TEMP_DIR" - - # 下载发布包 - TAR_NAME="argus-metric-$VERSION.tar.gz" - log_info "下载发布包: $TAR_NAME" - if ! curl -sfL "$BASE_URL/$TAR_NAME" -o "$TAR_NAME"; then - log_error "下载发布包失败: $BASE_URL/$TAR_NAME" - exit 1 - fi - - # 解压发布包 - log_info "解压发布包..." - if ! tar -xzf "$TAR_NAME"; then - log_error "解压发布包失败" - exit 1 - fi - - # 进入解压目录 - cd "argus-metric-$VERSION" - - # 执行卸载 - log_info "执行卸载..." - if [[ -f "uninstall_artifact.sh" ]]; then - chmod +x uninstall_artifact.sh - if ./uninstall_artifact.sh; then - log_success "Argus Metric 卸载完成!" - else - log_error "卸载失败" - exit 1 - fi - else - log_error "未找到卸载脚本 uninstall_artifact.sh" - exit 1 - fi -} - -# 主函数 -main() { - echo "==========================================" - echo " Argus Metric 在线安装脚本 v1.0" - echo "==========================================" - echo - - check_root - check_system - - if [[ "$ACTION" == "uninstall" ]]; then - uninstall_argus_metric - else - install_argus_metric - fi - - echo - log_info "操作完成!" -} - -# 脚本入口 -if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then - main "$@" -fi diff --git a/src/metric/client-plugins/demo-all-in-one/install_artifact.sh b/src/metric/client-plugins/demo-all-in-one/install_artifact.sh index d868bb1..9198751 100755 --- a/src/metric/client-plugins/demo-all-in-one/install_artifact.sh +++ b/src/metric/client-plugins/demo-all-in-one/install_artifact.sh @@ -295,7 +295,7 @@ install_system_deps() { local extract_dir="$deps_temp_dir/$extract_name" mkdir -p "$extract_dir" - if tar -xzf "$tar_file" -C "$extract_dir"; then + if tar -xzf "$tar_file" -C "$extract_dir" 2>/dev/null; then log_success " $tar_basename 解压完成" else log_error " $tar_basename 解压失败" @@ -333,9 +333,46 @@ install_system_deps() { cd "$deps_temp_dir" done + # 检查并启动 cron 服务 + start_cron_service + log_success "系统依赖包安装完成" } +# 启动 cron 服务 +start_cron_service() { + log_info "检查并启动 cron 服务..." + + # 检查 cron 是否已经在运行 + if pgrep -x "cron" > /dev/null; then + log_success "cron 服务已在运行" + return 0 + fi + + # 检查 /usr/sbin/cron 是否存在 + if [[ ! -f "/usr/sbin/cron" ]]; then + log_warning "cron 可执行文件不存在,跳过启动" + return 1 + fi + + # 启动 cron 服务 + log_info "启动 cron 服务..." + if /usr/sbin/cron start 2>/dev/null || /usr/sbin/cron 2>/dev/null; then + log_success "cron 服务启动成功" + + sleep 2 + + if pgrep -x "cron" > /dev/null; then + log_success "cron 服务运行正常" + else + log_warning "cron 服务可能未正常启动" + fi + else + log_error "cron 服务启动失败" + return 1 + fi +} + # 安装组件 install_components() { log_info "开始安装组件..." @@ -378,7 +415,7 @@ install_components() { component_temp_dir="$TEMP_DIR/$component" mkdir -p "$component_temp_dir" - if tar -xzf "$tar_file" -C "$component_temp_dir"; then + if tar -xzf "$tar_file" -C "$component_temp_dir" 2>/dev/null; then log_success " $component 解压完成" else log_error " $component 解压失败" @@ -524,8 +561,9 @@ EOF setup_health_check_cron() { log_info "设置健康检查定时任务..." - local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - local check_health_script="$script_dir/check_health.sh" + # 直接使用当前安装目录,不依赖current软链接 + # INSTALL_DIR 是 /opt/argus-metric/versions/1.34.0 + local check_health_script="$INSTALL_DIR/check_health.sh" # 检查健康检查脚本是否存在 if [[ ! -f "$check_health_script" ]]; then @@ -542,22 +580,24 @@ setup_health_check_cron() { # 获取当前用户的crontab(如果存在) crontab -l 2>/dev/null > "$temp_cron" || touch "$temp_cron" - # 检查是否已经存在健康检查任务 + # 检查并删除旧的健康检查任务 if grep -q "check_health.sh" "$temp_cron"; then - log_warning "健康检查定时任务已存在,跳过设置" - rm -f "$temp_cron" - return 0 + log_info "发现旧的健康检查定时任务,正在更新..." + # 删除所有包含check_health.sh的行 + grep -v "check_health.sh" "$temp_cron" > "$temp_cron.new" + mv "$temp_cron.new" "$temp_cron" + log_info "旧的健康检查定时任务已删除" fi # 添加新的定时任务(每5分钟执行一次) echo "# Argus-Metrics 健康检查定时任务" >> "$temp_cron" - echo "*/5 * * * * $check_health_script >> $script_dir/.health_cron.log 2>&1" >> "$temp_cron" + echo "*/5 * * * * $check_health_script >> $INSTALL_DIR/.health_cron.log 2>&1" >> "$temp_cron" # 安装新的crontab if crontab "$temp_cron"; then log_success "健康检查定时任务设置成功" log_info " 执行频率: 每5分钟" - log_info " 日志文件: $script_dir/.health_cron.log" + log_info " 日志文件: $INSTALL_DIR/.health_cron.log" log_info " 查看定时任务: crontab -l" log_info " 删除定时任务: crontab -e" else diff --git a/src/metric/client-plugins/demo-all-in-one/publish_artifact.sh b/src/metric/client-plugins/demo-all-in-one/publish_artifact.sh index 16c17f2..710b27a 100755 --- a/src/metric/client-plugins/demo-all-in-one/publish_artifact.sh +++ b/src/metric/client-plugins/demo-all-in-one/publish_artifact.sh @@ -22,7 +22,7 @@ log_error() { # 显示帮助信息 show_help() { - echo "AIOps Artifact 发布脚本" + echo "Argus-Metric Artifact 发布脚本" echo echo "用法: $0 <版本号>" echo @@ -43,7 +43,7 @@ fi VERSION="$1" ARTIFACT_DIR="artifact/$VERSION" -PUBLISH_DIR="publish/$VERSION" +PUBLISH_DIR="/srv/ftp/share" # 检查版本目录是否存在 if [[ ! -d "$ARTIFACT_DIR" ]]; then @@ -53,12 +53,16 @@ fi log_info "开始发布版本: $VERSION" -# 创建发布目录 -log_info "创建发布目录: $PUBLISH_DIR" +# 确保发布目录存在 +log_info "确保发布目录存在: $PUBLISH_DIR" mkdir -p "$PUBLISH_DIR" -# 复制所有 tar.gz 文件到发布目录 -log_info "复制 artifact 文件..." +# 创建临时目录用于打包 +TEMP_PACKAGE_DIR="/tmp/argus-metric-package-$$" +mkdir -p "$TEMP_PACKAGE_DIR" + +# 复制所有 tar.gz 文件到临时目录 +log_info "准备 artifact 文件..." tar_files=$(find "$ARTIFACT_DIR" -name "*.tar.gz" -type f) if [[ -z "$tar_files" ]]; then @@ -68,47 +72,78 @@ fi for file in $tar_files; do filename=$(basename "$file") - log_info " 复制: $filename" - cp "$file" "$PUBLISH_DIR/" + log_info " 准备: $filename" + cp "$file" "$TEMP_PACKAGE_DIR/" done # 复制版本信息文件 if [[ -f "$ARTIFACT_DIR/version.json" ]]; then log_info "复制版本信息文件..." - cp "$ARTIFACT_DIR/version.json" "$PUBLISH_DIR/" + cp "$ARTIFACT_DIR/version.json" "$TEMP_PACKAGE_DIR/" fi -# 复制安装脚本 +# 复制健康检查脚本 +if [[ -f "$ARTIFACT_DIR/check_health.sh" ]]; then + log_info "复制健康检查脚本..." + cp "$ARTIFACT_DIR/check_health.sh" "$TEMP_PACKAGE_DIR/" +elif [[ -f "check_health.sh" ]]; then + log_info "复制健康检查脚本 (从当前目录)..." + cp "check_health.sh" "$TEMP_PACKAGE_DIR/" +else + log_warning "未找到 check_health.sh 文件" +fi + +# 复制安装脚本并重命名为 install.sh if [[ -f "install_artifact.sh" ]]; then log_info "复制安装脚本..." - cp "install_artifact.sh" "$PUBLISH_DIR/" + cp "install_artifact.sh" "$TEMP_PACKAGE_DIR/install.sh" fi if [[ -f "uninstall_artifact.sh" ]]; then log_info "复制卸载脚本..." - cp "uninstall_artifact.sh" "$PUBLISH_DIR/" + cp "uninstall_artifact.sh" "$TEMP_PACKAGE_DIR/uninstall.sh" fi -# 创建tar包 -TAR_NAME="argus-metric-$VERSION.tar.gz" +# 创建tar包,使用新的命名规范 +TAR_NAME="argus-metric_$(echo $VERSION | tr '.' '_').tar.gz" log_info "创建发布包: $TAR_NAME" -cd publish -tar -czf "$TAR_NAME" "$VERSION" -cd .. +cd "$TEMP_PACKAGE_DIR" +tar -czf "$PUBLISH_DIR/$TAR_NAME" * +cd - > /dev/null + +# 清理临时目录 +rm -rf "$TEMP_PACKAGE_DIR" + +# 更新 LATEST_VERSION 文件 +log_info "更新 LATEST_VERSION 文件..." +echo "$VERSION" > "$PUBLISH_DIR/LATEST_VERSION" + +# 复制 setup.sh 到发布目录 +if [[ -f "setup.sh" ]]; then + log_info "复制 setup.sh 到发布目录..." + cp "setup.sh" "$PUBLISH_DIR/" +fi # 显示发布结果 log_success "版本 $VERSION 发布完成!" echo echo "发布目录: $PUBLISH_DIR" -echo "发布包: publish/$TAR_NAME" -echo "包大小: $(du -h "publish/$TAR_NAME" | cut -f1)" +echo "发布包: $PUBLISH_DIR/$TAR_NAME" +echo "包大小: $(du -h "$PUBLISH_DIR/$TAR_NAME" | cut -f1)" +echo "最新版本: $(cat "$PUBLISH_DIR/LATEST_VERSION")" echo -echo "包含文件:" +echo "发布目录中的文件:" ls -la "$PUBLISH_DIR" | while read line; do echo " $line" done echo echo "使用方法:" -echo " 1. 将 publish/$TAR_NAME 部署到 Web 服务器" -echo " 2. 用户可以通过以下命令安装:" -echo " curl -sfL https://yourdomain.com/$TAR_NAME | tar -xz && cd argus-metric-$VERSION && sudo ./install_artifact.sh" +echo " 1. 确保 /srv/ftp/share 目录可通过 FTP 访问" +echo " 2. 用户首先下载安装脚本:" +echo " curl -u ftpuser:admin1234 ftp://10.211.55.4/setup.sh -o setup.sh" +echo " 3. 然后执行安装 (自动获取最新版本):" +echo " sudo sh setup.sh" +echo " 4. 或者指定版本安装:" +echo " sudo sh setup.sh --version $VERSION" +echo " 5. 或者指定不同的FTP服务器:" +echo " sudo sh setup.sh --server 192.168.1.100 --user myuser --password mypass" diff --git a/src/metric/client-plugins/demo-all-in-one/setup.sh b/src/metric/client-plugins/demo-all-in-one/setup.sh new file mode 100644 index 0000000..87128f7 --- /dev/null +++ b/src/metric/client-plugins/demo-all-in-one/setup.sh @@ -0,0 +1,862 @@ +#!/bin/bash + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 日志函数 +log_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +log_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +log_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +FTP_SERVER="${FTP_SERVER}" +FTP_USER="${FTP_USER}" +FTP_PASS="${FTP_PASS}" +FTP_PORT="${FTP_PORT:-21}" +BASE_URL="" # FTP基础URL (将在check_ftp_params中设置) +LATEST_VERSION_URL="" # 版本文件URL (将在check_ftp_params中设置) +TEMP_DIR="/tmp/argus-metric-install-$$" + +# 安装目录配置 +DEFAULT_INSTALL_DIR="/opt/argus-metric" # 默认安装目录 +INSTALL_DIR="${INSTALL_DIR:-$DEFAULT_INSTALL_DIR}" # 可通过环境变量覆盖 +VERSIONS_DIR="$INSTALL_DIR/versions" # 版本目录 +BACKUPS_DIR="$INSTALL_DIR/backups" # 备份目录 +CURRENT_LINK="$INSTALL_DIR/current" # 当前版本软链接 +LATEST_VERSION_FILE="$INSTALL_DIR/LATEST_VERSION" # 当前版本记录文件 + +# 检查必需的FTP参数 +check_ftp_params() { + local missing_params=() + + if [[ -z "$FTP_SERVER" ]]; then + missing_params+=("FTP_SERVER") + fi + + if [[ -z "$FTP_USER" ]]; then + missing_params+=("FTP_USER") + fi + + if [[ -z "$FTP_PASS" ]]; then + missing_params+=("FTP_PASS") + fi + + if [[ ${#missing_params[@]} -gt 0 ]]; then + log_error "缺少必需的FTP参数: ${missing_params[*]}" + log_error "请通过以下方式之一设置FTP参数:" + log_error " 1. 命令行参数: --server <地址> --user <用户名> --password <密码>" + log_error " 2. 环境变量: FTP_SERVER=<地址> FTP_USER=<用户名> FTP_PASS=<密码>" + log_error "" + log_error "示例:" + log_error " sudo sh setup.sh --server 10.211.55.4 --user ftpuser --password admin1234" + log_error " FTP_SERVER=10.211.55.4 FTP_USER=ftpuser FTP_PASS=admin1234 sudo sh setup.sh" + exit 1 + fi + + # 设置BASE_URL和LATEST_VERSION_URL + BASE_URL="ftp://${FTP_SERVER}:${FTP_PORT}" + LATEST_VERSION_URL="$BASE_URL/LATEST_VERSION" + + log_info "FTP配置:" + log_info " 服务器: $FTP_SERVER:$FTP_PORT" + log_info " 用户: $FTP_USER" +} + +# 获取最新版本号的函数 +get_latest_version() { + log_info "获取最新版本信息..." >&2 + log_info "尝试从URL获取: $LATEST_VERSION_URL" >&2 + + # 先测试FTP连接 + log_info "测试FTP连接..." >&2 + if ! curl -u "${FTP_USER}:${FTP_PASS}" -sfI "$LATEST_VERSION_URL" >/dev/null 2>&1; then + log_error "无法连接到FTP服务器或文件不存在" >&2 + log_error "URL: $LATEST_VERSION_URL" >&2 + log_error "请检查:" >&2 + log_error " 1. FTP服务器是否运行: $FTP_SERVER:$FTP_PORT" >&2 + log_error " 2. 用户名密码是否正确: $FTP_USER" >&2 + log_error " 3. LATEST_VERSION文件是否存在" >&2 + log_error "手动测试命令: curl -u ${FTP_USER}:${FTP_PASS} ftp://${FTP_SERVER}/LATEST_VERSION" >&2 + exit 1 + fi + + # 获取文件内容 + if ! LATEST_VERSION=$(curl -u "${FTP_USER}:${FTP_PASS}" -sfL "$LATEST_VERSION_URL" 2>/dev/null | tr -d '[:space:]'); then + log_error "下载LATEST_VERSION文件失败" >&2 + exit 1 + fi + + log_info "原始获取内容: '$LATEST_VERSION'" >&2 + + if [[ -z "$LATEST_VERSION" ]]; then + log_error "获取到的版本信息为空" >&2 + log_error "可能的原因:" >&2 + log_error " 1. LATEST_VERSION文件为空" >&2 + log_error " 2. 文件内容格式不正确" >&2 + log_error " 3. 网络传输问题" >&2 + log_error "请检查FTP服务器上的 /srv/ftp/share/LATEST_VERSION 文件" >&2 + exit 1 + fi + + log_info "检测到最新版本: $LATEST_VERSION" >&2 + echo "$LATEST_VERSION" +} + +# 解析参数 +ARGUS_VERSION="" # 使用不同的变量名避免与系统VERSION冲突 +ACTION="install" + +while [[ $# -gt 0 ]]; do + case $1 in + --version) + ARGUS_VERSION="$2" + shift 2 + ;; + --server) + FTP_SERVER="$2" + shift 2 + ;; + --user) + FTP_USER="$2" + shift 2 + ;; + --password) + FTP_PASS="$2" + shift 2 + ;; + --port) + FTP_PORT="$2" + shift 2 + ;; + --uninstall) + ACTION="uninstall" + shift + ;; + --install-dir) + INSTALL_DIR="$2" + shift 2 + ;; + --rollback) + ACTION="rollback" + shift + ;; + --backup-list) + ACTION="backup-list" + shift + ;; + --status) + ACTION="status" + shift + ;; + --help) + echo "Argus Metric FTP在线安装脚本" + echo + echo "用法: curl -u <用户名>:<密码> ftp://<服务器>/setup.sh -o setup.sh && sh setup.sh [选项]" + echo + echo "必需参数 (必须通过命令行参数或环境变量设置):" + echo " --server SERVER FTP服务器地址 (必须)" + echo " --user USER FTP用户名 (必须)" + echo " --password PASS FTP密码 (必须)" + echo + echo "可选参数:" + echo " --version VERSION 指定版本 (默认: 自动获取最新版本)" + echo " --port PORT FTP端口 (默认: 21)" + echo " --install-dir DIR 安装目录 (默认: /opt/argus-metric)" + echo " --uninstall 卸载 (自动确认)" + echo " --rollback 回滚到上一个备份版本" + echo " --backup-list 列出所有备份版本" + echo " --status 显示当前安装状态" + echo " --help 显示帮助" + echo + echo "环境变量:" + echo " FTP_SERVER FTP服务器地址 (必须)" + echo " FTP_USER FTP用户名 (必须)" + echo " FTP_PASS FTP密码 (必须)" + echo " FTP_PORT FTP端口 (默认: 21)" + echo + echo "示例:" + echo " # 方式1: 使用命令行参数" + echo " curl -u ftpuser:admin1234 ftp://10.211.55.4/setup.sh -o setup.sh" + echo " sudo sh setup.sh --server 10.211.55.4 --user ftpuser --password admin1234" + echo " " + echo " # 方式2: 使用环境变量" + echo " FTP_SERVER=10.211.55.4 FTP_USER=ftpuser FTP_PASS=admin1234 sudo sh setup.sh" + echo " " + echo " # 指定版本安装" + echo " sudo sh setup.sh --server 10.211.55.4 --user ftpuser --password admin1234 --version 1.30.0" + echo " " + echo " # 卸载" + echo " sudo sh setup.sh --server 10.211.55.4 --user ftpuser --password admin1234 --uninstall" + exit 0 + ;; + *) + log_error "未知参数: $1" + echo "使用 --help 查看帮助信息" + exit 1 + ;; + esac +done + +# 清理函数 +cleanup() { + if [[ -d "$TEMP_DIR" ]]; then + rm -rf "$TEMP_DIR" + fi +} + +trap cleanup EXIT + +# 创建安装目录结构 +create_install_directories() { + log_info "创建安装目录结构..." + + # 创建主要目录 + mkdir -p "$VERSIONS_DIR" + mkdir -p "$BACKUPS_DIR" + + log_success "安装目录结构创建完成: $INSTALL_DIR" +} + +# 获取当前安装的版本 +get_current_version() { + # 优先从LATEST_VERSION文件读取 + if [[ -f "$LATEST_VERSION_FILE" ]]; then + local version_from_file=$(cat "$LATEST_VERSION_FILE" 2>/dev/null | tr -d '[:space:]') + if [[ -n "$version_from_file" ]]; then + # 确保版本号格式一致(不带v前缀) + echo "$version_from_file" + return 0 + fi + fi + + # 如果文件不存在或为空,从软链接读取 + if [[ -L "$CURRENT_LINK" ]]; then + local current_path=$(readlink "$CURRENT_LINK") + # 从版本目录名中提取版本号(现在不带v前缀) + basename "$current_path" + else + echo "" + fi +} + +# 检查是否已安装 +check_installed() { + if [[ -L "$CURRENT_LINK" ]] && [[ -d "$CURRENT_LINK" ]]; then + local current_version=$(get_current_version) + if [[ -n "$current_version" ]]; then + log_info "检测到已安装版本: v$current_version" + return 0 + fi + fi + return 1 +} + +# 更新LATEST_VERSION文件 +update_latest_version_file() { + local version="$1" + log_info "更新LATEST_VERSION文件: $version" + + if echo "$version" > "$LATEST_VERSION_FILE"; then + log_success "LATEST_VERSION文件已更新" + else + log_error "更新LATEST_VERSION文件失败" + return 1 + fi +} + +# 备份当前版本 +backup_current_version() { + local current_version=$(get_current_version) + if [[ -z "$current_version" ]]; then + log_info "没有当前版本需要备份" + return 0 + fi + + local backup_name="$current_version" + local backup_path="$BACKUPS_DIR/$backup_name" + + log_info "备份当前版本 $current_version 到: $backup_path" + + # 如果备份已存在,先删除 + if [[ -d "$backup_path" ]]; then + log_info "备份版本已存在,覆盖: $backup_path" + rm -rf "$backup_path" + fi + + # 复制当前版本目录 + if cp -r "$CURRENT_LINK" "$backup_path"; then + log_success "版本备份完成: $backup_name" + + # 清理旧备份,只保留最近3个 + cleanup_old_backups + else + log_error "版本备份失败" + exit 1 + fi +} + +# 清理旧备份 +cleanup_old_backups() { + log_info "清理旧版本备份..." + + # 获取备份目录列表,按时间排序,保留最近3个 + local backup_count=$(ls -1 "$BACKUPS_DIR" 2>/dev/null | wc -l) + if [[ $backup_count -gt 3 ]]; then + local to_remove=$((backup_count - 3)) + ls -1t "$BACKUPS_DIR" | tail -n $to_remove | while read backup; do + log_info "删除旧备份: $backup" + rm -rf "$BACKUPS_DIR/$backup" + done + fi +} + +# 回滚到备份版本 +rollback_to_backup() { + local backup_name="$1" + local backup_path="$BACKUPS_DIR/$backup_name" + + if [[ ! -d "$backup_path" ]]; then + log_error "备份不存在: $backup_path" + return 1 + fi + + log_info "回滚到备份版本: $backup_name" + + # 停止当前服务 + stop_services + + # 恢复软链接(备份目录应该包含版本内容) + if ln -sfn "$backup_path" "$CURRENT_LINK"; then + log_success "版本回滚完成: $backup_name" + + # 启动服务 + start_services + return 0 + else + log_error "版本回滚失败" + return 1 + fi +} + +# 停止服务 +stop_services() { + log_info "停止当前服务..." + + # 检查服务是否正在运行 + if ! check_services_running; then + log_info "服务未运行,无需停止" + return 0 + fi + + # 尝试使用卸载脚本停止服务 + if [[ -f "$CURRENT_LINK/uninstall.sh" ]]; then + cd "$CURRENT_LINK" + chmod +x uninstall.sh + + # 自动确认停止服务(避免交互式确认) + echo "y" | ./uninstall.sh >/dev/null 2>&1 + local stop_exit_code=$? + + if [[ $stop_exit_code -eq 0 ]]; then + log_success "服务停止完成" + else + log_warning "停止服务时出现警告,尝试手动停止" + manual_stop_services + fi + else + log_warning "未找到卸载脚本,尝试手动停止服务" + manual_stop_services + fi +} + +# 手动停止服务 +manual_stop_services() { + log_info "手动停止服务..." + + # 停止 node_exporter + if pgrep -f "node_exporter" >/dev/null 2>&1; then + pkill -f "node_exporter" && log_info "node_exporter 已停止" + fi + + # 停止 dcgm_exporter + if pgrep -f "dcgm_exporter" >/dev/null 2>&1; then + pkill -f "dcgm_exporter" && log_info "dcgm_exporter 已停止" + fi + + # 等待进程完全停止 + sleep 2 + + # 检查是否还有残留进程 + if pgrep -f "node_exporter\|dcgm_exporter" >/dev/null 2>&1; then + log_warning "仍有服务进程运行,尝试强制停止" + pkill -9 -f "node_exporter\|dcgm_exporter" 2>/dev/null || true + fi + + log_success "手动停止服务完成" +} + +# 启动服务 +start_services() { + log_info "启动服务..." + + if [[ -f "$CURRENT_LINK/install.sh" ]]; then + cd "$CURRENT_LINK" + chmod +x install.sh + + # 检查服务是否已经在运行 + if check_services_running; then + log_info "服务已在运行,跳过启动" + return 0 + fi + + # 启动服务 - 传递正确的安装目录参数 + if ./install.sh "$INSTALL_DIR" 2>/dev/null; then + log_success "服务启动完成" + else + log_error "服务启动失败" + return 1 + fi + else + log_error "未找到安装脚本" + return 1 + fi +} + +# 检查服务是否正在运行 +check_services_running() { + # 检查常见的服务端口是否在监听 + local ports=(9100 9400) # node-exporter 和 dcgm-exporter 的默认端口 + + for port in "${ports[@]}"; do + if netstat -tlnp 2>/dev/null | grep -q ":$port "; then + log_info "检测到服务正在端口 $port 上运行" + return 0 + fi + done + + # 检查相关进程 + if pgrep -f "node_exporter\|dcgm_exporter" >/dev/null 2>&1; then + log_info "检测到相关服务进程正在运行" + return 0 + fi + + return 1 +} + +# 检查是否为 root 用户 +check_root() { + if [[ $EUID -ne 0 ]]; then + log_error "此脚本需要 root 权限运行" + log_info "请使用: sudo sh setup.sh" + exit 1 + fi +} + +# 检查系统要求 +check_system() { + log_info "检查系统要求..." + + # 检查操作系统 + if [[ ! -f /etc/os-release ]]; then + log_error "无法检测操作系统版本" + exit 1 + fi + + # 读取系统信息,使用子shell避免污染当前环境变量 + local OS_INFO=$(source /etc/os-release && echo "$NAME $VERSION_ID") + log_info "检测到操作系统: $OS_INFO" + + # 检查系统架构 + arch=$(uname -m) + log_info "系统架构: $arch" + + # 检查磁盘空间 + available_space=$(df / | awk 'NR==2 {print $4}') + if [[ $available_space -lt 1024 ]]; then + log_warning "可用磁盘空间不足 1GB,当前可用: $(($available_space / 1024 / 1024))GB" + fi +} + +# 下载并安装 +install_argus_metric() { + # 如果没有指定版本,获取最新版本 + if [[ -z "$ARGUS_VERSION" ]]; then + ARGUS_VERSION=$(get_latest_version) + fi + + log_info "开始安装 Argus Metric v$ARGUS_VERSION..." + log_info "安装目录: $INSTALL_DIR" + + # 检查是否已安装 + local is_upgrade=false + if check_installed; then + local current_version=$(get_current_version) + if [[ "$current_version" == "$ARGUS_VERSION" ]]; then + log_info "版本 v$ARGUS_VERSION 已安装,无需重复安装" + return 0 + fi + log_info "检测到版本升级: v$current_version -> v$ARGUS_VERSION" + is_upgrade=true + + # 备份当前版本 + backup_current_version + fi + + # 创建安装目录结构 + create_install_directories + + # 创建临时目录 + mkdir -p "$TEMP_DIR" + cd "$TEMP_DIR" + + # 下载发布包,使用新的命名规范 + TAR_NAME="argus-metric_$(echo $ARGUS_VERSION | tr '.' '_').tar.gz" + log_info "下载发布包: $TAR_NAME" + log_info "从FTP服务器下载: $FTP_SERVER:$FTP_PORT, 用户: $FTP_USER" + + # 构造curl命令并显示(隐藏密码) + CURL_CMD="curl -u \"${FTP_USER}:***\" -sfL \"$BASE_URL/$TAR_NAME\" -o \"$TAR_NAME\"" + log_info "执行命令: $CURL_CMD" + + if ! curl -u "${FTP_USER}:${FTP_PASS}" -sfL "$BASE_URL/$TAR_NAME" -o "$TAR_NAME"; then + log_error "下载发布包失败: $BASE_URL/$TAR_NAME" + log_error "完整命令: curl -u \"${FTP_USER}:${FTP_PASS}\" -sfL \"$BASE_URL/$TAR_NAME\" -o \"$TAR_NAME\"" + log_error "请检查FTP服务器连接、用户名密码是否正确" + exit 1 + fi + + # 解压发布包到当前目录 + log_info "解压发布包..." + if ! tar -xzf "$TAR_NAME"; then + log_error "解压发布包失败" + exit 1 + fi + + # 显示解压后的文件结构 + log_info "解压后的文件结构:" + ls -la "$TEMP_DIR" + + # 准备版本目录 + local version_dir="$VERSIONS_DIR/$ARGUS_VERSION" + log_info "安装到版本目录: $version_dir" + + # 如果升级,先停止服务 + if [[ "$is_upgrade" == true ]]; then + stop_services + fi + + # 创建版本目录 + if [[ -d "$version_dir" ]]; then + log_info "版本目录已存在,备份后更新" + rm -rf "$version_dir" + fi + + # 创建新的版本目录 + mkdir -p "$version_dir" + + # 移动解压的文件到版本目录 + log_info "移动文件到版本目录: $TEMP_DIR/* -> $version_dir/" + + # 检查源目录是否有内容 + if [[ ! "$(ls -A "$TEMP_DIR" 2>/dev/null)" ]]; then + log_error "临时目录为空,无法移动文件" + exit 1 + fi + + # 检查目标目录是否存在 + if [[ ! -d "$version_dir" ]]; then + log_error "目标版本目录不存在: $version_dir" + exit 1 + fi + + # 执行文件移动 + if mv "$TEMP_DIR"/* "$version_dir" 2>/dev/null; then + log_success "文件移动到版本目录完成" + else + log_error "移动文件到版本目录失败" + log_error "源目录内容:" + ls -la "$TEMP_DIR" || true + log_error "目标目录状态:" + ls -la "$version_dir" || true + log_error "权限检查:" + ls -ld "$TEMP_DIR" "$version_dir" || true + exit 1 + fi + + # 执行安装脚本 + log_info "执行安装脚本..." + cd "$version_dir" + if [[ -f "install.sh" ]]; then + chmod +x install.sh + # 传递版本目录作为安装目录给安装脚本 + if ./install.sh "$version_dir"; then + log_success "安装脚本执行完成" + else + log_error "安装脚本执行失败" + # 如果是升级失败,尝试回滚 + if [[ "$is_upgrade" == true ]]; then + log_warning "升级失败,尝试回滚到之前版本..." + local latest_backup=$(ls -1t "$BACKUPS_DIR" 2>/dev/null | head -n 1) + if [[ -n "$latest_backup" ]]; then + rollback_to_backup "$latest_backup" + return 1 + fi + fi + exit 1 + fi + else + log_error "未找到安装脚本 install.sh" + exit 1 + fi + + # 更新软链接指向新版本 + log_info "更新当前版本链接..." + if ln -sfn "$version_dir" "$CURRENT_LINK"; then + log_success "版本链接更新完成: $CURRENT_LINK -> $version_dir" + else + log_error "版本链接更新失败" + exit 1 + fi + + # 更新LATEST_VERSION文件 + update_latest_version_file "$ARGUS_VERSION" + + # 启动服务 + start_services + + log_success "Argus Metric v$ARGUS_VERSION 安装完成!" + + # 显示安装信息 + echo + log_info "安装信息:" + log_info " 版本: $ARGUS_VERSION" + log_info " 安装目录: $INSTALL_DIR" + log_info " 版本目录: $version_dir" + log_info " 当前链接: $CURRENT_LINK" + if [[ "$is_upgrade" == true ]]; then + log_info " 升级类型: 版本升级" + else + log_info " 安装类型: 全新安装" + fi +} + +# 卸载 +uninstall_argus_metric() { + log_info "开始卸载 Argus Metric..." + log_info "安装目录: $INSTALL_DIR" + + # 检查是否已安装 + if ! check_installed; then + log_info "未检测到已安装的 Argus Metric" + return 0 + fi + + local current_version=$(get_current_version) + log_info "检测到当前版本: v$current_version" + + # 停止服务 + stop_services + + # 执行卸载脚本 + log_info "执行卸载脚本..." + if [[ -f "$CURRENT_LINK/uninstall.sh" ]]; then + cd "$CURRENT_LINK" + chmod +x uninstall.sh + + # 自动确认卸载(因为用户已经明确使用了 --uninstall 参数) + log_info "自动确认卸载操作..." + echo "y" | ./uninstall.sh + local uninstall_exit_code=$? + + if [[ $uninstall_exit_code -eq 0 ]]; then + log_success "卸载脚本执行完成" + else + log_error "卸载脚本执行失败 (退出码: $uninstall_exit_code)" + exit 1 + fi + else + log_warning "未找到卸载脚本,执行基本清理" + fi + + # 清理安装目录 + log_info "清理安装目录..." + if [[ -d "$INSTALL_DIR" ]]; then + # 询问是否完全删除安装目录 + log_warning "这将删除整个安装目录: $INSTALL_DIR" + log_warning "包括所有版本、备份和配置文件" + + # 在自动化环境中,直接删除 + if rm -rf "$INSTALL_DIR"; then + log_success "安装目录已完全清理: $INSTALL_DIR" + else + log_error "清理安装目录失败" + exit 1 + fi + else + log_info "安装目录不存在,无需清理" + fi + + log_success "Argus Metric 卸载完成!" +} + +# 显示状态 +show_status() { + echo "==========================================" + echo " Argus Metric 安装状态" + echo "==========================================" + echo + + if check_installed; then + local current_version=$(get_current_version) + log_info "当前版本: $current_version" + log_info "安装目录: $INSTALL_DIR" + log_info "当前链接: $CURRENT_LINK" + log_info "版本目录: $VERSIONS_DIR/$current_version" + log_info "版本文件: $LATEST_VERSION_FILE" + + # 显示LATEST_VERSION文件内容 + if [[ -f "$LATEST_VERSION_FILE" ]]; then + local file_version=$(cat "$LATEST_VERSION_FILE" 2>/dev/null | tr -d '[:space:]') + log_info "版本文件内容: $file_version" + fi + + echo + log_info "目录结构:" + if [[ -d "$INSTALL_DIR" ]]; then + tree -L 2 "$INSTALL_DIR" 2>/dev/null || ls -la "$INSTALL_DIR" + fi + + echo + log_info "可用版本:" + if [[ -d "$VERSIONS_DIR" ]]; then + ls -1 "$VERSIONS_DIR" 2>/dev/null | sed 's/^/ - /' + else + echo " 无" + fi + + echo + log_info "备份版本:" + if [[ -d "$BACKUPS_DIR" ]] && [[ $(ls -1 "$BACKUPS_DIR" 2>/dev/null | wc -l) -gt 0 ]]; then + ls -1t "$BACKUPS_DIR" 2>/dev/null | sed 's/^/ - /' + else + echo " 无" + fi + else + log_warning "Argus Metric 未安装" + log_info "安装目录: $INSTALL_DIR" + fi +} + +# 列出备份 +list_backups() { + echo "==========================================" + echo " Argus Metric 备份列表" + echo "==========================================" + echo + + if [[ -d "$BACKUPS_DIR" ]] && [[ $(ls -1 "$BACKUPS_DIR" 2>/dev/null | wc -l) -gt 0 ]]; then + log_info "可用备份版本:" + ls -1t "$BACKUPS_DIR" 2>/dev/null | while read backup; do + local backup_time=$(stat -c %y "$BACKUPS_DIR/$backup" 2>/dev/null | cut -d' ' -f1-2) + echo " - $backup (创建时间: $backup_time)" + done + else + log_warning "没有可用的备份版本" + fi +} + +# 回滚功能 +rollback_version() { + log_info "开始回滚操作..." + + if ! check_installed; then + log_error "没有检测到已安装的版本,无法回滚" + exit 1 + fi + + # 获取最新的备份 + local latest_backup=$(ls -1t "$BACKUPS_DIR" 2>/dev/null | head -n 1) + if [[ -z "$latest_backup" ]]; then + log_error "没有找到可用的备份版本" + exit 1 + fi + + log_info "将回滚到备份版本: $latest_backup" + + if rollback_to_backup "$latest_backup"; then + log_success "回滚完成!" + + # 显示当前状态 + echo + show_status + else + log_error "回滚失败" + exit 1 + fi +} + +# 主函数 +main() { + echo "==========================================" + echo " Argus Metric 在线安装脚本 v1.0" + echo "==========================================" + echo + + # 对于状态和备份列表操作,不需要FTP参数和root权限 + if [[ "$ACTION" == "status" || "$ACTION" == "backup-list" ]]; then + if [[ "$ACTION" == "status" ]]; then + show_status + elif [[ "$ACTION" == "backup-list" ]]; then + list_backups + fi + return 0 + fi + + check_root + + # 更新目录配置变量(在设置INSTALL_DIR后) + VERSIONS_DIR="$INSTALL_DIR/versions" + BACKUPS_DIR="$INSTALL_DIR/backups" + CURRENT_LINK="$INSTALL_DIR/current" + LATEST_VERSION_FILE="$INSTALL_DIR/LATEST_VERSION" + + # 对于回滚操作,不需要FTP参数 + if [[ "$ACTION" == "rollback" ]]; then + rollback_version + return 0 + fi + + check_ftp_params + check_system + + if [[ "$ACTION" == "uninstall" ]]; then + uninstall_argus_metric + else + install_argus_metric + fi + + echo + log_info "操作完成!" +} + +# 脚本入口 +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + main "$@" +fi diff --git a/src/metric/ftp/deps/vsftpd_3.0.5-0ubuntu1.1_amd64.deb b/src/metric/ftp/deps/vsftpd_3.0.5-0ubuntu1.1_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..995a5db5eb03f45dac5a91c0803fce4ddca21ad2 GIT binary patch literal 122660 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�}h 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 < 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 NhjZVew1$iFq5#MO%@zOv literal 0 HcmV?d00001 diff --git a/src/metric/ftp/vsftpd-config-README.md b/src/metric/ftp/vsftpd-config-README.md new file mode 100644 index 0000000..acd3d0c --- /dev/null +++ b/src/metric/ftp/vsftpd-config-README.md @@ -0,0 +1,111 @@ +# vsftpd 配置 + +配置 vsftpd FTP 服务器。 + +# 安装deps下 vsftpd 的离线安装包 + +sudo dpkg -i vsftpd_3.0.5-0ubuntu1.1_amd64.deb + +# 有依赖问题,修复依赖 + +sudo apt-get install -f + +## 启动服务 + +sudo service vsftpd start + +# 重启服务 + +sudo service vsftpd restart + +# 查看状态 + +sudo service vsftpd status + +## 备份配置文件 + +先备份默认配置,出问题能恢复: + +```bash +sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak +``` + +## 修改配置文件 + +编辑配置: + +```bash +sudo vim /etc/vsftpd.conf +``` + +### 基本配置参数 + +```bash +# 允许本地用户登录 +local_enable=YES + +# 允许写操作(上传/删除/修改) +write_enable=YES + +# 限制用户在自己目录中,不能访问整个系统 +chroot_local_user=YES + +# 防止 chroot 错误(重要!) +allow_writeable_chroot=YES + +# 被动模式配置 +pasv_enable=YES +pasv_min_port=30000 +pasv_max_port=31000 +``` + +## 创建 FTP 目录和用户 + +### 创建共享目录 + +```bash +sudo mkdir -p /srv/ftp/share +sudo chmod 755 /srv/ftp/share +``` + +### 创建专用用户 + +```bash +sudo adduser ftpuser + +# 修改用户主目录 +sudo usermod -d /srv/ftp/share ftpuser +``` + +## 重启服务 + +```bash +sudo service vsftpd restart +``` + +## 防火墙配置 + +### 开放基本端口 + +```bash +sudo ufw allow 21/tcp +``` + +### 开放被动模式端口 + +```bash +sudo ufw allow 30000:31000/tcp +``` + +## 测试连接 + +```bash +# 本地测试 +ftp localhost + +# 远程测试 +ftp 你的服务器IP +``` + +用户名:ftpuser +密码:设置的密码 \ No newline at end of file diff --git a/src/metric/ftp/vsftpd-offline-install.sh b/src/metric/ftp/vsftpd-offline-install.sh new file mode 100755 index 0000000..79f70aa --- /dev/null +++ b/src/metric/ftp/vsftpd-offline-install.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# vsftpd 离线安装脚本 +# 使用方法:./vsftpd-offline-install.sh + +set -e + +echo "开始 vsftpd 离线安装..." + +# 检查是否为 root 用户 +if [ "$EUID" -ne 0 ]; then + echo "请使用 root 权限运行此脚本" + exit 1 +fi + +# 定义离线包目录 +OFFLINE_DIR="./vsftpd-offline" +DEB_DIR="$OFFLINE_DIR/debs" + +# 检查离线包是否存在 +if [ ! -d "$OFFLINE_DIR" ]; then + echo "错误:找不到离线包目录 $OFFLINE_DIR" + echo "请先准备离线包,方法:" + echo "1. 在有网络的机器上运行:" + echo " mkdir -p $DEB_DIR" + echo " cd $DEB_DIR" + echo " apt download vsftpd" + echo " apt download \$(apt-cache depends vsftpd | grep Depends | cut -d: -f2 | tr -d ' ')" + echo "2. 将整个 $OFFLINE_DIR 目录拷贝到目标机器" + exit 1 +fi + +# 安装 deb 包 +echo "安装 vsftpd 及依赖包..." +cd "$DEB_DIR" +dpkg -i *.deb || apt-get install -f -y + +# 检查安装状态 +if systemctl is-active --quiet vsftpd; then + echo "vsftpd 安装成功并已启动" +else + echo "启动 vsftpd 服务..." + systemctl start vsftpd + systemctl enable vsftpd +fi + +echo "vsftpd 离线安装完成!" +echo "配置文件位置: /etc/vsftpd.conf" +echo "服务状态: $(systemctl is-active vsftpd)"