![命令未在 Nagios 中運行](https://rvso.com/image/789275/%E5%91%BD%E4%BB%A4%E6%9C%AA%E5%9C%A8%20Nagios%20%E4%B8%AD%E9%81%8B%E8%A1%8C.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=
可能需要它們圍繞值。我相信這是您的意圖,但它們只是沒有轉義。)