У меня получилось.
Первая ошибка, которую я допустил - не экспортировал ORACLE_HOME
и ORACLE_PATH
в скрипте обработчика событий.
Вторая ошибка была в этой строке:
echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql
this_file.sql
находился в \usr\local\nagios\libexec\eventhandlers
. Когда я выполнял скрипт вручную из папки eventhandlers
, файл this_file.sql
был доступен. Nagios не выполняет его из этой папки. Когда я указал полный путь и заставил его работать.
Вы можете выйти из Matlab с помощью quit
или exit
. В основном они одинаковы, за исключением того, что с помощью exit
вы можете указать код выхода. Если вы готовы злоупотреблять кодом выхода, вы можете сделать что-то вроде
matlab -nodesktop -nosplash -nodisplay -r "exit(times(2, 7));" > /dev/null; echo $?
Если вы собираетесь это сделать, имейте в виду, что bash может расстроиться из-за не-нулевых кодов выхода, и вам может потребоваться некоторая обработка ошибок, чтобы убедиться, что ваша функция возвращает код ошибки, который может обработать выход.
Другой вариант — захватить выходные данные Matlab, а затем проанализировать то, что вы хотите
matlab -nodesktop -nosplash -nodisplay -r "format compact; Answer=times(2, 7), exit" | sed -ne '/Answer =/{n;p}' | sed -e 's/ *//g'