You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本调用nagios-contacts.sh遍历对应目录下所有配对文件

批量调用nagios-contacts.sh处理所有对应Nagios配置文件的解决方案

Hey there, let's sort out how to batch process all your Nagios host and service config files using the script you already wrote. Here's a straightforward wrapper script that will loop through every .cfg file in your hosts directory and call nagios-contacts.sh for each matching pair in the services directory:

#!/bin/bash

# 定义目录路径,后续修改更方便
HOSTS_DIR="/usr/local/nagios/etc/hosts"
SERVICES_DIR="/usr/local/nagios/etc/services"

# 遍历hosts目录下所有.cfg配置文件
for host_cfg in "$HOSTS_DIR"/*.cfg; do
    # 提取纯文件名(去掉路径部分)
    cfg_filename=$(basename "$host_cfg")
    # 拼接services目录下的对应文件路径
    service_cfg="$SERVICES_DIR/$cfg_filename"

    # 先检查services目录下是否存在对应文件(可选步骤,按需保留)
    if [ -f "$service_cfg" ]; then
        # 调用你的处理脚本,传入两个文件路径
        ./nagios-contacts.sh "$host_cfg" "$service_cfg"
        # 输出处理日志,方便追踪进度
        echo "Successfully processed: $host_cfg → $service_cfg"
    else
        # 如果对应文件不存在,输出警告信息
        echo "Warning: No matching service config found for $host_cfg, skipping..."
    fi
done

关键细节说明:

  • 目录变量定义:把两个目录路径做成变量,以后如果目录结构变动,只需要修改这两行即可,不用动整个循环逻辑。
  • 安全遍历文件:用双引号包裹路径变量,避免遇到文件名含空格或特殊字符时出现错误。
  • 文件存在检查:这个判断是可选的——如果你的services目录下肯定有每个hosts文件的对应副本,可以直接去掉if判断,直接执行处理脚本。
  • 日志输出:添加echo语句能让你清楚看到哪些文件已经处理,方便排查问题。

使用步骤:

  1. 将上述代码保存为batch-nagios-contacts.sh
  2. 给脚本添加执行权限:chmod +x batch-nagios-contacts.sh
  3. 运行脚本:./batch-nagios-contacts.sh

注意:如果你的nagios-contacts.sh不在当前工作目录,记得把调用它的路径改成绝对路径(比如/home/youruser/scripts/nagios-contacts.sh)。

内容的提问来源于stack exchange,提问作者MarkG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:39:37