String - строковые проверки

Пассивный индикатор, выполняет проверку соответствия строки, переданной с клиента эталонному значению, хранящемуся на сервере в аргументе str.

Аргументы

Options - Опции для проверки разделенные пробелом, допустимые опции "reinit", "dynamic", "empty_err", "empty_ok", "text".

Str - Эталонное значение

Secret и Patience - общие аргументы для всех пассивных индикаторов.

Описание

Если строка переданная с клиента совпадает со значением str, устанавливается статус OK.

Если str пустое и есть опция reinit, то статус индикатора OK, и значение str устанавливается в новое значение.

Если новая строка пустая, и есть опция empty_err, устанавливается статус ERR. Значение str не меняется.

Если новая строка пустая, и есть опция empty_ok, устанавливается статус OK. Значение str не меняется.

Опция dynamic - если указана, то по приходу новой строки, отличающейся от эталона, будет сгенерировано оповещение, но индикатор будет по прежнему в статусе OK, а значение str изменится. Без опции dynamic, значение str никогда не будет изменено автоматически (только пользователем), и по приходу строки, отличающейся от эталонной, будет устанавливаться статус ERR.

Опция text подразумевает, что строка состоит из нескольких строк (разделенных символами перевода строки '\n'). Она никак не влияет на статус индикатора, но влияет на то, как будет составлено оповещение. Для многострочных строк, удобнее использовать опцию text.

Примеры

Статический индикатор:

Статически индикатор будет "зеленым" только если значение совпадает с эталоном, который не меняется при обновлении.

Он удобен, когда нам в первую очередь важно соответствие эталону, а изменения не имеют принципиального значения.

# Все ОК, статус безопасности "зеленый", планете ничего не угрожает.
$ okerrclient --name test:string:static -s "METHOD string options=reinit" "STR security code: GREEN"
okerr updated test:string:static = security code: GREEN

# Ситуация изменилась, опасный астероид приближается:
$ okerrclient --name test:string:static -s "STR security code: ORANGE (asteroid collision possible)"
okerr updated test:string:static = security code: ORANGE (asteroid collis..
# Индикатор перешел в состояние ERR, отправлено оповещение
# Значение STR не изменилось, так как у нас нет флага dynamic.

# Ситуация изменилась еще раз:
$ okerrclient --name test:string:static -s "STR security code: RED (zombie attack)"
okerr updated test:string:static = security code: RED (zombie attack)
# И опять - индикатор ERR, мы не получаем алерт, но новое значение видно в поле "Детали" индикатора.

# Но вот ситуация наладилась и снова код безопасности зеленый.:
$ okerrclient --name test:string:static -s "STR security code: GREEN"
okerr updated test:string:static = security code: GREEN
# Индикатор переходит в состояние OK

И только сейчас индикатор переходит в состояние OK и мы получаем второй алерт. Вне зависимости от того, сколько раз будет меняться строка, алерт будет первый раз при смене статуса OK -> ERR и второй раз при смене статуса ERR -> OK.

Динамический индикатор Динамический индикатор более удобен, когда нам важно отслеживать изменения.

# Создаем индикатор. Бэтмен охраняет город. OK.
$ okerrclient --name test:string:dynamic -s 'METHOD string options="reinit dynamic empty_err"' 'STR Batman'
okerr updated test:string:dynamic = Batman

# Теперь на смену заступает Супермен. Об этом приходит алерт, но индикатор по прежнему ОК.
$ okerrclient --name test:string:dynamic -s 'STR Superman'
okerr updated test:string:dynamic = Superman

# А теперь, никто не охраняет город! Устанавливается статус ERR (так как есть опция empty_err), отправляется оповещение 
$ okerrclient --name test:string:dynamic -s 'STR'
okerr updated test:string:dynamic = 

# Чип и Дейл пришли на помощь. Теперь индикатор снова перешел в состояние OK, о чем высылается алерт.
$ okerrclient --name test:string:dynamic -s 'STR Chip and Dale'
okerr updated test:string:dynamic = Chip and Dale

Стандартные скрипты

В стандартной библиотеке скриптов есть скрипт myip, который сообщает на сервер okerr внешний IP клиентской машины и скрипт opentcp, который сообщает на сервер список открытых TCP портов.