![Команда не выполняется в Nagios](https://rvso.com/image/789275/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0%20%D0%BD%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%B2%20Nagios.png)
Может ли кто-нибудь объяснить мне, почему следующий код не запускается, когда я помещаю его в 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_line
commnad_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=
они могут понадобиться около значения. Я полагаю, что это было вашим намерением, но они просто не были экранированы.)