Проверка размеров файлов в папке

Started by Dillinger, October 26, 2009, 10:52:38 AM

Previous topic - Next topic

Dillinger

Здравствуйте!
Скажите пожалуйста, можно-ли реализовать такую задачу:
Нужно проверять размер файлов в определенной папке, и если любой файл становится больше определенного значения - сигнализировать об этом.
Я только начинаю использовать NetXMS - может быть что то пропустил в документации ???

Alex Kirhenshtein

Агент такого параметра не представляет, но можно добавить свой:

Пример скрипта:
#!/bin/sh

[ -z $1 ] && echo ERROR && exit

ls -l $1 | grep '^-' | awk '{ print $5; }'|sort -g -r | head -n1


Добавить в nxagentd.conf:
ExternalParameter = CheckDirSize(*):/path/to/sizeOfLargestFileInDir.sh $1

В принципе, можно даже сделать без внешнего скрипта:
ExternalParameter = CheckDirSize(*):ls -l $1 | grep '^-' | awk '{ print $5; }'|sort -g -r | head -n1

CheckDirSize — произвольное название, (*) означает, что у этого параметра есть аргументы, после двоеточия — команда, которая будет запущена через шелл

Аналогичный скрипт можно сделать и для Windows машин.

Alex Kirhenshtein

Quote from: Alex Kirhenshtein on October 26, 2009, 11:10:16 AM
Агент такого параметра не представляет, но можно добавить свой:

Пример скрипта:
#!/bin/sh

[ -z $1 ] && echo ERROR && exit

ls -l $1 | grep '^-' | awk '{ print $5; }'|sort -g -r | head -n1


Добавить в nxagentd.conf:
ExternalParameter = CheckDirSize(*):/path/to/sizeOfLargestFileInDir.sh $1

В принципе, можно даже сделать без внешнего скрипта:
ExternalParameter = CheckDirSize(*):ls -l $1 | grep '^-' | awk '{ print $5; }'|sort -g -r | head -n1

CheckDirSize — произвольное название, (*) означает, что у этого параметра есть аргументы, после двоеточия — команда, которая будет запущена через шелл

Аналогичный скрипт можно сделать и для Windows машин.


Edit: Забыл сказать, что список параметров сервер забирает с агента при configuration poll-е, по умолчанию — раз в час. Configuration poll можно сделать принудительно, из консоли — правый клик на ноде, poll -> configuration.

Dillinger

Большое спасибо, однако мне необходимо осуществлять мониторинг размера файлов в папках на серверах Novell Netware.
Видимо придется делать map дисков на Windows машину и через нее осуществлять данную операцию.

Victor Kirhenshtein

Dlja NetWare toze est' agent, i on podderzivaet parametri File.Size i File.Count. V novoj versii pojavitsja takze parametr File.Count s viborkoj po razmeru i vremeni modifikacii.

Dillinger

Quote from: Victor Kirhenshtein on October 27, 2009, 10:16:57 PM
V novoj versii pojavitsja takze parametr File.Count s viborkoj po razmeru i vremeni modifikacii.
Это очень хорошо - буду ждать. Спасибо.

Victor Kirhenshtein

Добавил такую возможность в 0.2.31. Теперь полный формат File.Count и File.Size выглядит так:

File.Count(path, pattern, recursive, size, age)

где:

path        Путь к файлу или каталогу
pattern    Маска для выборки файлов
recursive  Индикатор рекурсии - если выставлен в 1, то агент будет искать файлы в подкаталогах, если 0 - то нет
size         Фильтр по размеру; если 0 - фильтра нет, если < 0 - берутся файлы с размером меньше abs(size) байт, если > 0 - берутся файлы с размером больше size байт
age         Фильтр по возрасту файла;  если 0 - фильтра нет, если < 0 - берутся файлы со временем изменения меньше чем abs(size) секунд назад, если > 0 - берутся файлы со временем изменения больше чем abs(size) секунд назад

Например:

File.Count(C:\TEMP, *.dat, 0, 0, 600) - количество файлов с расширением .dat в каталоге C:\TEMP, измененных раньше, чем 10 минут назад, без учета файлов в подкаталогах.
File.Count(C:\TEMP, *.dat, 1, -1000) - количество файлов с расширением .dat и размером меньше 1000 байт в каталоге C:\TEMP и подкаталогах.