Nagiosでコマンドが実行されない

Nagiosでコマンドが実行されない

カスタム Nagios コマンドの command_line に次のコードを配置したときに、なぜ実行されないのか、誰か説明してもらえますか? ターミナルで実行すると動作します。

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=(値の前後に引用符が必要になる可能性があるため、引用符を追加しました。これは意図したものだと思いますが、エスケープされなかっただけです。)

関連情報