Nagios 中未运行命令

Nagios 中未运行命令

有人能帮我解释一下为什么当我将以下代码放在自定义 Nagios 命令的命令行中时它没有运行吗?当我在终端中运行它时它可以工作。

command_name     notify-host-by-sms
commnad_line     echo -e "AT+CMGS="$CONTACTPAGER$"\r" | socat -t3 - TCP:XXX.XXX.XXX.XXX:10002 && echo -e "$HOSTNAME$ $HOSTSTATE$ $HOSTADDRESS$ $LONGDATETIME$\x1A" | socat - TCP:XXX.XXX.XXX.XXX:10002

答案1

在 Nagios 中无法使用|和,因此您必须将其包装为脚本。(此外,它不会处理拼写错误。)&&command_linecommnad_line

command_name  notify-host-by-sms
commnad_line  /usr/local/bin/notify-host-by-sms.sh $CONTACTPAGER$ $HOSTNAME$ $HOSTSTATE$ $HOSTADDRESS$ $LONGDATETIME$

然后在脚本中使用这些命令行参数,例如,

#!/bin/bash

echo -e "AT+CMGS=\"${1}\"\r" \
  | socat -t3 - TCP:192.0.2.1:10002 \
  || exit 1

echo -e "${2} ${3} ${4} ${5}\x1A" \
  | socat - TCP:192.0.2.1:10002 \
  || exit 1

(我添加了额外的引号,因为AT+CMGS=可能需要它们围绕值。我相信这是你的意图,但它们只是没有被转义。)

相关内容