AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 729541
Accepted
TryTryAgain
TryTryAgain
Asked: 2015-10-17 11:18:01 +0800 CST2015-10-17 11:18:01 +0800 CST 2015-10-17 11:18:01 +0800 CST

在邮件脚本中针对 Icinga2 宏变量运行 linux 命令?

  • 772

看起来Icinga1和Icinga2之间删除了一些宏?

例如,我只能添加"HOSTDURATIONSEC" = "$host.duration_sec$",到我的模板中,然后在mail-host-notification脚本中使用它,例如:State: $HOSTSTATE for $HOSTDURATIONSEC它告诉我主机处于该状态多长时间。但它只给了我几秒钟的时间,而且在接收警报时一目了然。

因为HOSTDURATION不再可用或尚未实现,所以我尝试使用函数和其中的其他 bash 尝试将秒数转换为更易读的东西,mail-host-notification但它似乎不起作用。

我希望能够在该脚本中创建一个新变量,可能使用来自 linux 包 timetrans 的命令,如下所示:

#!/bin/sh
SECS=$HOSTDURATIONSEC
CONVERTSECONDS=`timetrans -c $SECS`
eval $CONVERTSECONDS
$HRTIME=`eval $CONVERTSECONDS`

template=`cat <<TEMPLATE
Date/Time: $SHORTDATETIME (EST)

Notification Type: $NOTIFICATIONTYPE

Host: $HOSTALIAS
Address: $HOSTADDRESS
State: $HOSTSTATE for $HRTIME

------------------------------------------
New Jersey DC Icinga Monitoring

Additional Info: $HOSTOUTPUT

Notes on this device:
$HOSTNOTES

Comments: $NOTIFICATIONAUTHORNAME $NOTIFICATIONCOMMENT
TEMPLATE
`

...但是就像我尝试使用函数来转换 seconds 变量$HOSTDURATIONSEC一样,它不起作用。我在很多方面都试过了,但在我看来,Icinga 没有通过env模板中的那些设置。

  env = {
    "NOTIFICATIONTYPE" = "$notification.type$"
    "HOSTALIAS" = "$host.display_name$",
    "HOSTADDRESS" = "$address$",
    "HOSTSTATE" = "$host.state$",
    "HOSTNOTES" = "$host.notes$",
    "HOSTDURATIONSEC" = "$host.duration_sec$",
    "LONGDATETIME" = "$icinga.long_date_time$",
    "SHORTDATETIME" = "$icinga.short_date_time$",
    "HOSTOUTPUT" = "$host.output$",
    "NOTIFICATIONAUTHORNAME" = "$notification.author$",
    "NOTIFICATIONCOMMENT" = "$notification.comment$",
    "HOSTDISPLAYNAME" = "$host.display_name$",
    "USEREMAIL" = "$user.email$"
  }

当然,我添加到此列表中的任何内容(例如"SHORTDATETIME" = "$icinga.short_date_time$",、"HOSTNOTES" = "$host.notes$",等)都可以正常工作,但是我在尝试针对脚本中的这些变量运行 linux 命令时遇到了麻烦。我错过了什么吗?有人知道我要去哪里错了吗?感谢任何/所有帮助。

monitoring
  • 1 1 个回答
  • 1071 Views

1 个回答

  • Voted
  1. Best Answer
    lazyfrosch
    2015-10-17T23:34:51+08:002015-10-17T23:34:51+08:00

    我会在通知脚本中留下这样的计算技巧。由于您没有使用 Icinga 2 内部,因此摆弄一个函数是没有意义的。

    我在您的脚本中注意到的是:

    $HRTIME=`eval $CONVERTSECONDS`
    

    正确的是:

    HRTIME=`eval $CONVERTSECONDS`
    

    顺便提一句。如果您正在使用timetrans包dnssec-tools,它在/usr/sbin,所以不在 icinga/nagios 用户的路径中。

    修改后的工作示例:

    #!/bin/sh
    SECS=$HOSTDURATIONSEC
    TIMEREADABLE=`/usr/sbin/timetrans -c $SECS`
    
    template=`cat <<TEMPLATE
    Date/Time: $SHORTDATETIME (EST)
    
    Notification Type: $NOTIFICATIONTYPE
    
    Host: $HOSTALIAS
    Address: $HOSTADDRESS
    State: $HOSTSTATE for $TIMEREADABLE
    
    ------------------------------------------
    New Jersey DC Icinga Monitoring
    
    Additional Info: $HOSTOUTPUT
    
    Notes on this device:
    $HOSTNOTES
    
    Comments: $NOTIFICATIONAUTHORNAME $NOTIFICATIONCOMMENT
    TEMPLATE
    `
    /usr/bin/printf "%b" "$template"
    

    通过以下方式调用:

    HOSTDURATIONSEC=123 sh test.sh
    

    PS(1) 如果你在 Icinga 2 中遗漏了一个宏,请打开一个问题来建议它

    PS(2) 不要说其他用户是懦夫,这不好!

    • 1

相关问题

  • 如何监控系统在哪里写/读磁盘?[关闭]

  • 如何监控 SAN 服务器(通过 iSCSI)?

  • 共享点管理?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SNMP HOSTMIB.MIB 未加载?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve