Выполнение программы/скрипта
Выполнение программы/скрипта осуществляет вызов исполняемого файла и возвращает его вывод из потоков stdout и stderr.
В зависимости от подтипа проверки меняется следующее за ним поле.
Настройка
Типы программ/скриптов
В качестве подтипа из выпадающего списка доступны варианты:
-
Программа/скрипт в ФС.
В поле Исполняемый файл указывается имя программы или путь к скрипту.
-
Скрипт из репозитария.
В поле Скрипт из выпадающего списка выбирается скрипт, заранее сохранённый в репозитарии.
-
В поле Скрипт вводится текст скрипта с применением кнопок управления.
Этот подтип доступен только пользователям, у которых есть права на исполнение скриптов. Если же у пользователя нет таких прав, но скрипт был создан другим пользователем, то подтип будет доступен, а скрипт будет в режиме для чтения.
Для каждого подтипа скрипта возможно указать дополнительные Аргументы.
Если хотя бы один из передаваемых аргументов представляет собой строку с пробелами, то каждый аргумент необходимо указать в отдельном поле:
Таймаут
Время, в течение которого агент будет ожидать результатов выполнения скрипта или программы с момента её запуска.
Значение таймаута по умолчанию – 30 секунд.
Если выполнение программы или скрипта занимает дольше, чем указанное время таймаута, то объект переходит в состояние WORKING, а проверка возвращает следующие данные:
Примеры
Помимо обычных текстовых или числовых данных, из скрипта можно вернуть данные в формате JSON, например:
{"cpu": "10", "mem": "20"}
В этом случае данные будут распознаны и распределены в таблицу данных по столбцам cpu и mem со значениями 10 и 20 соответственно:
cpu | mem |
---|---|
10 |
20 |
Для вывода многострочной таблицы скрипт должен возвращать данные в ином формате:
{
"host1": {
"cpu": "10",
"mem": "20"
},
"host2": {
"cpu": "30",
"mem": "40"
}
}
В этом случае данные будут распознаны и распределены в таблицу данных по столбцам "host1.cpu", "host1.mem", "host2.cpu" и "host2.mem":
host1.cpu | host1.mem | host2.cpu | host2.mem |
---|---|---|---|
10 |
20 |
30 |
40 |
Если выбрать stdout в выпадающем списке Таблица по полю, то в секции Данные в заголовке получится многострочная таблица:
cpu | mem |
---|---|
10 |
20 |
30 |
40 |
Для наглядности можно добавить дополнительный признак host в возвращаемые данные:
{
"host1": {
"host": "1",
"cpu": "10",
"mem": "20"
},
"host2": {
"host": "2",
"cpu": "30",
"mem": "40"
}
}
Получится таблица:
host | cpu | mem |
---|---|---|
1 |
10 |
20 |
2 |
30 |
40 |
Ещё один хороший пример:
{
"MEM": {
"memoryType": "MEM",
"bytesTotal": 4130643968,
"bytesUsed": 3002249216,
"bytesAvailable": 1128394752,
"percentUsed": 72.68235266119164
},
"SWAP": {
"memoryType": "SWAP",
"bytesTotal": 536866816,
"bytesUsed": 469790720,
"bytesAvailable": 67076096,
"percentUsed": 87.50600819403225
},
"TOTAL": {
"memoryType": "TOTAL",
"bytesTotal": 4667510784,
"bytesUsed": 3472039936,
"bytesAvailable": 1195470848,
"percentUsed": 74.38740040841435
}
}
# !/bin/sh
# Пример с выводом в stdout
# Поиск запущенного скрипта TEST.sh
echo `ps -ef | grep "TEST.sh" | grep -v grep | wc -l`
#!/bin/sh
# Пример с выводом в stdout в формате JSON
# Поиск запущенного скрипта TEST.sh
TEST=$( ps -ef | grep "TEST.sh" | grep -v grep | wc -l )
echo "{"TEST":"$TEST"}"
@echo off
REM Пример с выводом в stdout
REM Поиск службы RDP
for /F "tokens=*" %%i in ('tasklist.exe /svc ^| find /c "TermService"') do set TERMSRV=%%i
echo %TERMSRV%
@echo off
REM Пример с выводом в stdout в JSON формате
REM Поиск службы RDP и запущенного командного файла test.cmd
for /F "tokens=*" %%i in ('tasklist.exe /svc ^| find /c "TermService"') do set TERMSRV=%%i
for /F "tokens=*" %%i in ('tasklist.exe /v ^| find /c "test.cmd"') do set TEST=%%i
echo {"TERMSRV":"%TERMSRV%","TEST":"%TEST%"}