Вам нужно выйти из $
с другим $
] и заключите имя в одинарные кавычки:
define service{
use generic-service
host_name SERVERNAME
service_description MSSQL Service
check_command check_nt!SERVICESTATE!-d SHOWALL -l 'MSSQL$$PROD'
}
в качестве альтернативы вы можете опустить одинарные кавычки, используя MSSQL \ $$ PROD
. Мне первый звонок больше нравится;)
У Крисси правильный ответ.
Я просто хочу упомянуть вариант, который, возможно, будет легче проанализировать: измените определение вашей команды, чтобы взять другое $ ARG $
, после чего сложность этого вида экранирования обрабатывается в определении вашей команды, а не в каждой службе. Итак, теперь ваша служба выглядит так:
check_command check_nt!SERVICESTATE!-d SHOWALL -l MSSQL!PROD
и в вашем command.cfg:
command_line /path/to/commmand --someopt value1 $ARG1$"$$"$ARG2$
You need to "quote" it and double up the $ sign for some reason.
For example the service name for Windows Internal Database is "MSSQL$MICROSOFT##SSEE".
My check_command:
check_command check_nt_srv!MSSQL"$$"MICROSOFT\#\#SSEE
Я безрезультатно пробовал ответы на приведенные выше ответы, а также пытаюсь отслеживать экземпляры SQL Server. Теперь, в 2017 году, похоже, что НЕ удвоение $ работает, пока вы сохраняете кавычки:
check_nt -H xx.xx.xx.xx -s "" -p 12489 -v SERVICESTATE -l 'MSSQL $ BLAHBLAH '-d SHOWALL