Я пытаюсь сравнить что-то из последней команды с помощью оператора bash if:
#!/bin/bash
monit status
if [ "status" != "error" ]; then
echo -e "hostname\ttest\t0\t0" | /usr/sbin/send_nsca -H hostname -c /etc/send_nsca.cfg
exit 1;
fi
Даже если monit status
выдает status = online with all services
он запускает команду echo. Не могу понять, как сделать if
заявление соответствует статусу monit status
вывод.
Вы сравниваете статические строки status
vs. error
.
Есть несколько способов сделать это. Чтобы записать вывод команды в переменную, используйте
STATUS=`monit status`
или
STATUS=$(monit status)
В таком простом случае, как ваш, я бы выбрал простой
if monit status | grep -q error ; then
...
fi