Преобразование значения.

Started by vitabios, February 28, 2015, 04:53:33 PM

Previous topic - Next topic

vitabios

Дописал в конфиг агента парамерт, измеряющий размер папки для linux:
ExternalParameter = FolderSize(*):cd "$1" && du -sh -b

Получаю вот такое значение:
1640657413056.

Т.е. на конце точка. Как можно преобразовать данное значение в целое?
Пытался вывести без точки, на вкладке "Преобразование данных" написал следующее:
a = length($1)-1;
b = left($1,a);
c = abs(b);
return c;


Тест вроде бы успешно проходит, но значение метрики не выводится.
Как правильно получить значение?

kozlov_ao

Измени скрипт получения данных на такой:
ExternalParameter = FolderSize(*):cd "$1" && du -sh -b | awk '{print($$1)}'
в настройках метрики, выставляй тип данных как Int, ну или UInt...

$$ - не ошибка, иначе NX воспримет его как передаваемый параметр.

vitabios

Спасибо, но получаю значение 857884057, но оно не соответсвует действительности.
Папка весит 1 640 666 413 056 байт

kozlov_ao

1. А если запустить скрипт из консоли?
2. Какой тип данных выбирается? Указанное число выходит за пределы типа int.
3. Действительно нужен размер в байтах?Возможно имеет смысл конвертить сразу в мегабайты, etc.

vitabios

Если из putty выполнить команду то пустой ответ. Тип данных пробовал разный и целое и 64бит целое. Можно и в мегабайтах,  главное чтобы только число

kozlov_ao

Сорри, не акцентировал внимание сразу... надо выполнить du -sh -b | awk '{print($1)}' (т.е. не $$)

vitabios

Спасибо,  получилось.  Но только с навели.  Вместо awk указал gawk.

vitabios

Рано обрадовался.  В консоли выполняется а в netxms возвращает пустое значение