![Nagios에서 명령이 실행되지 않습니다.](https://rvso.com/image/789275/Nagios%EC%97%90%EC%84%9C%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
사용자 정의 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에서는 |
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=
. 귀하의 의도라고 생각하지만 이스케이프되지 않았습니다.)