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

如何在BASH中仅为指定Nagios服务定义追加联系组配置

实现方案

你可以直接用sed或者awk完成需求,两种常用方案如下:

方案1:sed 直接修改配置文件

匹配use为linux-service的服务块,自动追加联系组:

# 加.bak后缀自动备份原文件,确认修改无误后可删除备份
sed -i.bak '/define service {/,/}/{
  /use[[:space:]]*linux-service/{
    h;n;:loop
    /contact_groups/{s/$/, contactgroup2/;b}
    /}/{b}
    n;b loop
}' 你的nagios服务配置文件路径

方案2:awk 实现(可读性更高,适合复杂扩展)

awk '
/define service {/ { in_service=1; is_target=0 }
in_service && /use[[:space:]]*linux-service/ { is_target=1 }
in_service && is_target && /^[[:space:]]*contact_groups/ { sub(/$/, ", contactgroup2") }
/}/ { in_service=0 }
1' 原配置文件 > 临时配置文件 && mv 临时配置文件 原配置文件

注意事项

  • 操作前务必提前备份配置,避免语法错误导致Nagios服务异常
  • 如果你需要匹配其他服务模板,把命令中的linux-service替换为你需要的use字段值即可
  • 需要追加的联系组名称可以自行修改contactgroup2为实际值
  • 两种方案都兼容行首任意缩进、use和值之间任意空格的格式场景,适配常规Nagios配置写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:03