Ad Widget

Collapse

Мониторинг создания файла в папке

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dezhnevo
    Member
    • Sep 2018
    • 91

    #1

    Мониторинг создания файла в папке

    Здравствуйте.
    Прошу помощи. Задача: мониторить и, соответственно, отсылать на почту при сработке триггера, когда в папке создается файл дампа 1с по пути: %USERPROFILE%\AppData\Local\1C\1cv8\dumps\1с*.mdmp , чтобы человек видел генерацию файла дампа и реагировал на это.
    Понял, что пользоваться vfs.file.exists не вариант. Нужно использовать скрипт. Вот решение от KOS https://www.zabbix.com/forum/in-russ...-в-папке.
    Вопрос, скорее всего к нему, так как он прочитает Подскажите, у вас избыточный функционал в скрипте для моей задачи, что вырезать из него чтобы его не "сломать"?
    Задача, простая, но как - то в Z реализуется не явно.
    Буду благодарен за помощь. Спасибо.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    В вашем случае, если быстро, то в опубликованном там скрипте нужно строчку
    Code:
    dir /b C:\WORK\%DIR%\%SUBDIR%\*.XML >%DIR%.%SUBDIR%.TXT 2>nul
    заменить на то, что нужно вам - скорее всего, что-то вроде
    Code:
    dir /b C:\Users\%DIR%\AppData\Local\1C\%SUBDIR%\dumps\1с*.mdmp >%DIR%.%SUBDIR%.TXT 2>nul
    и вызывать как опрос метрики vmkofax[ИмяПользователя,1cv8] (а третий параметр не использовать).
    Наверное, да - для вашей задачи можно лишнее повыкидывать, но это надо смотреть внимательнее, и раньше вторника я, боюсь, ответить не смогу.

    Comment

    • dezhnevo
      Member
      • Sep 2018
      • 91

      #3
      Договорились, я в понедельник про мониторинг оргтехники. Вы во вторник по текущему вопросу :) Спасибо, как всегда приятно общаться. Хороших выходных

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Почистил обработку третьего параметра, оставив только первые два (директория/поддиректория).
        Сохраняем батник как файл с именем NEWFILES.CMD.
        Остальное - как раньше, с претензией на то, что должна корректно обрабатываться ситуация, когда файлы имеют пересекающиеся имена (т.е. имя одного файла полностью входит в имя другого файла).
        Code:
        [USER="4888"]echo[/USER] off
        rem Автор: Константин Ошмян
        rem Выдаём список файлов для директории, которых не было в прошлый раз.
        rem Результаты последнего просмотра сохраняем в файле %DIR%.%SUBDIR%.TXT,
        rem предыдущего просмотра - %DIR%.%SUBDIR%.OLD.
        
        set DIR=%1
        set SUBDIR=%2
        if .%SUBDIR% == . (
            echo Parameters needed: DirectoryName SubdirectoryName
            exit
        )
        set FNAME=%DIR%.%SUBDIR%
        set OLDDIR=%CD%
        cd %0\..
        
        if NOT EXIST %FNAME%.TXT echo.>%FNAME%.TXT
        if EXIST %FNAME%.OLD del %FNAME%.OLD
        rename %FNAME%.TXT %FNAME%.OLD
        
        FOR /F %%F IN ('dir /b D:\%DIR%\%SUBDIR%\*.XML') do (
            echo \%%F\ >>%FNAME%.TXT
            find "\%%F\" %FNAME%.OLD >nul || echo %%F
        )
        
        cd %OLDDIR%
        exit 0
        Можно сделать более универсальным, если в качестве параметра передавать полный путь вместе с шаблоном имени файла, но это требует установки параметра "UnsafeUserParameters=1" в конфиге агента. Тогда второй параметр всё равно потребуется, он задаёт имя файлов для хранения промежуточных результатов (используются два файла: с расширением ".TXT" и ".OLD"). Если второй параметр задан не в виде абсолютного пути, то создаваться временные файлы будут в той же директории, где находится сам батник.
        Пример вызова:
        Code:
        NEWFILES.CMD C:\Users\Ivanov\AppData\Local\1C\1cv8\dumps\1с*.mdmp Ivanov
        Code:
        [USER="4888"]echo[/USER] off
        rem Автор: Константин Ошмян
        rem Выдаём список файлов для директории, которых не было в прошлый раз.
        rem Параметры:
        rem   TEMPLATE - задаёт полный путь к директории, заканчивающийся шаблоном имён файлов.
        rem   FNAME - имя временного файла для сохранения промежуточных результатов.
        rem Результаты последнего просмотра сохраняем в файле %FNAME%.TXT,
        rem предыдущего просмотра - %FNAME%.OLD.
        
        set TEMPLATE=%1
        set FNAME=%2
        if .%FNAME% == . (
            echo Parameters needed: FullPath\with\template\for\filename TempFileName
            echo For example: %0 C:\TEMP\*.TMP TMP
            exit
        )
        set OLDDIR=%CD%
        cd %0\..
        
        if NOT EXIST %FNAME%.TXT echo.>%FNAME%.TXT
        if EXIST %FNAME%.OLD del %FNAME%.OLD
        rename %FNAME%.TXT %FNAME%.OLD
        
        FOR /F %%F IN ('dir /b %TEMPLATE%') do (
            echo \%%F\ >>%FNAME%.TXT
            find "\%%F\" %FNAME%.OLD >nul || echo %%F
        )
        
        cd %OLDDIR%
        exit 0
        В любом варианте запускается это дело через UserParameters, для чего в конфиг-файл агента (zabbix_agentd.conf) добавляется строка наподобие следующей:
        Code:
        [FONT=courier new]UserParameter=newfiles[*],C:\zabbix\NEWFILES.CMD $1 $2[/FONT]
        Элемент данных определяется с типом "Text" и описанием: "New files in folder $1"
        Триггеры же имеют условия вида: "item.strlen()>0 and item.nodata(30)=0", чтобы отсылать уведомление и сразу же закрываться.

        В обоих случаях за один вызов обрабатывается только одна директория; причём количество файлов в ней не должно быть большим (иначе батник будет работать долго и может не укладываться в тайм-аут по умолчанию).
        Но я подозреваю, что, судя по этой теме, вам хотелось бы обрабатывать за один приём целое дерево директорий. Но это лучше обсуждать уже в той теме.
        Last edited by Kos; 21-11-2018, 12:56.

        Comment

        • dezhnevo
          Member
          • Sep 2018
          • 91

          #5
          Спасибо. Буду пробовать

          Comment

          Working...