Не могу понять почему возникает ошибка "Value should be a JSON object"
Задача: обнаруживать файлы по маске и следить за их размером.
Написал скрипт для LLD на Windows сервере. Сам скрипт:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set disk=
for /F "eol=: tokens=1,2* delims= " %%i in ('WMIC LogicalDisk Get Name^,DriveType ^|findstr /B "3" 2^>nul') do (
if not %%j==D: (set disk=%%j\oracle\oradata\orcl\) else (set disk="%%j\oracle\product\10.2.0\oradata\orcl\")
for /f "tokens=1*" %%A in ('dir /B /S !disk! 2^>nul^|findstr /I /R "AUDIT0[1-3][.]DBF\> INDX0[1-3][.]DBF\> REPL0[1-3][.]DBF\> USERS0[1-3][.]DBF\>"2^>nul') do (
set LIST=!LIST!{"{#FILEPATH}":"%%~dpnxA",
set dsk=%%~dA
set dsk=!dsk:~0,-1!
set name="{#FILENAME}":"%%~nA_!dsk!"},
set LIST=!LIST!!name!
)
)
set LIST={"data":[%LIST:~0,-1%]}
@echo %LIST%
EndLocal
exit
Обращаюсь к нему через UserParameter. Скрипт прекрасно срабатывает и выдаёт следующую информацию:
{"data":[{"{#FILEPATH}":"D:\oracle\product\10.2.0\oradata\o rcl\AUDIT01.DBF","{#FILENAME}":"AUDIT01_D"},{"{#FI LEPATH}":"D:\oracle\product\10.2.0\oradata\orcl\IN DX01.DBF","{#FILENAME}":"INDX01_D"},{"{#FILEPATH}" :"D:\oracle\product\10.2.0\oradata\orcl\REPL01.DBF ","{#FILENAME}":"REPL01_D"},{"{#FILEPATH}":"D:\ora cle\product\10.2.0\oradata\orcl\USERS01.DBF","{#FI LENAME}":"USERS01_D"}]}
Сравниваю с информацией выдаваемой стандартным элементом zabbix vfs.fs.discovery:
{"data":[{"{#FSNAME}":"C:","{#FSTYPE}":"NTFS","{#FSDRIVETYP E}":"fixed"},{"{#FSNAME}":"D:","{#FSTYPE}":"NTFS", "{#FSDRIVETYPE}":"fixed"},{"{#FSNAME}":"E:","{#FST YPE}":"NTFS","{#FSDRIVETYPE}":"fixed"},{"{#FSNAME} ":"F:","{#FSTYPE}":"NTFS","{#FSDRIVETYPE}":"fixed" },{"{#FSNAME}":"G:","{#FSTYPE}":"UNKNOWN","{#FSDRI VETYPE}":"cdrom"}]}
Не вижу никаких проблем с форматом. Где искать?
Задача: обнаруживать файлы по маске и следить за их размером.
Написал скрипт для LLD на Windows сервере. Сам скрипт:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set disk=
for /F "eol=: tokens=1,2* delims= " %%i in ('WMIC LogicalDisk Get Name^,DriveType ^|findstr /B "3" 2^>nul') do (
if not %%j==D: (set disk=%%j\oracle\oradata\orcl\) else (set disk="%%j\oracle\product\10.2.0\oradata\orcl\")
for /f "tokens=1*" %%A in ('dir /B /S !disk! 2^>nul^|findstr /I /R "AUDIT0[1-3][.]DBF\> INDX0[1-3][.]DBF\> REPL0[1-3][.]DBF\> USERS0[1-3][.]DBF\>"2^>nul') do (
set LIST=!LIST!{"{#FILEPATH}":"%%~dpnxA",
set dsk=%%~dA
set dsk=!dsk:~0,-1!
set name="{#FILENAME}":"%%~nA_!dsk!"},
set LIST=!LIST!!name!
)
)
set LIST={"data":[%LIST:~0,-1%]}
@echo %LIST%
EndLocal
exit
Обращаюсь к нему через UserParameter. Скрипт прекрасно срабатывает и выдаёт следующую информацию:
{"data":[{"{#FILEPATH}":"D:\oracle\product\10.2.0\oradata\o rcl\AUDIT01.DBF","{#FILENAME}":"AUDIT01_D"},{"{#FI LEPATH}":"D:\oracle\product\10.2.0\oradata\orcl\IN DX01.DBF","{#FILENAME}":"INDX01_D"},{"{#FILEPATH}" :"D:\oracle\product\10.2.0\oradata\orcl\REPL01.DBF ","{#FILENAME}":"REPL01_D"},{"{#FILEPATH}":"D:\ora cle\product\10.2.0\oradata\orcl\USERS01.DBF","{#FI LENAME}":"USERS01_D"}]}
Сравниваю с информацией выдаваемой стандартным элементом zabbix vfs.fs.discovery:
{"data":[{"{#FSNAME}":"C:","{#FSTYPE}":"NTFS","{#FSDRIVETYP E}":"fixed"},{"{#FSNAME}":"D:","{#FSTYPE}":"NTFS", "{#FSDRIVETYPE}":"fixed"},{"{#FSNAME}":"E:","{#FST YPE}":"NTFS","{#FSDRIVETYPE}":"fixed"},{"{#FSNAME} ":"F:","{#FSTYPE}":"NTFS","{#FSDRIVETYPE}":"fixed" },{"{#FSNAME}":"G:","{#FSTYPE}":"UNKNOWN","{#FSDRI VETYPE}":"cdrom"}]}
Не вижу никаких проблем с форматом. Где искать?
Comment