Ad Widget

Collapse

Низкоуровневое обнаружение файлов.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 187

    #1

    Низкоуровневое обнаружение файлов.

    Не могу понять почему возникает ошибка "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"}]}
    Не вижу никаких проблем с форматом. Где искать?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #2
    Подозреваю, что в JSON-е каждый обратный слэш должен экранироваться ещё одним обратным слэшем:
    Code:
    "{#FILEPATH}":"D:\\oracle\\product\\10.2.0\\oradata\\orcl\\AUDIT01.DBF"
    Цитата (курсив - мой):
    Строка - коллекция нуля или больше символов Unicode, заключенная в двойные кавычки, используя \ (обратную косую черту) в качестве символа экранирования.

    Comment

    • Victor Sklyarov
      Senior Member
      • Apr 2016
      • 187

      #3
      Экранировка символа \

      Спасибо, помогло. Проблема решена.

      Comment

      Working...