Команда не выполняется в Nagios

Команда не выполняется в Nagios

Может ли кто-нибудь объяснить мне, почему следующий код не запускается, когда я помещаю его в command_line для пользовательской команды 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 невозможно использовать |and , поэтому вам придется оформить это как скрипт. (Кроме того, это не будет работать из-за опечатки.)&&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=они могут понадобиться около значения. Я полагаю, что это было вашим намерением, но они просто не были экранированы.)

Связанный контент