LINUX.ORG.RU

скрипт сбора статистики из cdr файлов

 ,


0

2

Прошу помощи.

Начинаю осваивать shell Есть сервер с Линух - rethat

Задача в следующем:

есть каталог /usr/test/2016 в нем каждый час генерятся cdr-файлы с именем состоящим из даты и времени

вот такой список за текущий год

2016_04_06_06_00_00.cdr

2016_04_06_07_00_00.cdr

2016_04_06_08_00_00.cdr

2016_04_06_09_00_00.cdr

2016_04_06_10_00_00.cdr

2016_04_06_11_00_00.cdr

Нужно собирать статистику по количеству определенных событий в cdr за час и скидывать ее в zabbix(но это уже дело третье)

Рассматривал два варианта:

1.Перед завершением каждого час по crony запускать скрипт и через grep из последнего открытого (текущего) файла достать количество определенных сообщений и посчитать их. Но это надо делать перед самым закрытием и некоторая часть файла не будет проанализирована.

2. Анализировать предыдущий(предпоследний) уже закрытый файл, но тут встал затык как его определить в скрипте, то есть в grep нужно подставлять имя предпоследнего файла.

Подскажите плиз в какую сторону смотреть. Может быть велосипед уже изобретен....



Последнее исправление: whitemirror70 (всего исправлений: 6)

но тут встал затык как его определить в скрипте, то есть в grep нужно подставлять имя предпоследнего файла.

вот так не получится?

cat $(ls | tail -2 | head -1 ) | grep bla-bla-bla
? Возможно через sort еще пропустить надо будет

filequest
()
Ответ на: комментарий от whitemirror70

но для первого варианта годится. Только надо запускать перед закрытием файла.

whitemirror70
() автор топика
  1. Если есть возможность, то лучше вставить обработку файла туда, где генерируются эти файлы. Так не придётся подгадывать время и можно не боятся что файл ещё не дописан.
  2. Использовать incrond или другую inotify-тузлу.
    В ней можно поставить watch на закрытие файла (IN_CLOSE_WRITE) в каталоге.
    Конечно этот вариант нужно протестить, т.к. всё зависит от того как файлы попадаются в этот каталог. Если там в выходном каталоге создаются какие-то временные файлы, то этот вариант тоже надо отработать правильно.
Nao ★★★★★
()
Ответ на: комментарий от filequest

Точно! Работает. В конце директории валялся кем-то созданный файл spam.txt, который также учитывался. Теперь все ок! Благодарю!

whitemirror70
() автор топика
Ответ на: комментарий от Nao

Спасибо за информацию! Действительно так было бы правильно. Возможно потом надо будет сделать именно так, но это уже видимо с разработчиками основного софта придется бодаться...

whitemirror70
() автор топика
Ответ на: комментарий от Nao

насколько я понял - там не установлен пакет incrond, что тоже требует согласования с разрабами так как система в активной эксплуатации и любой чих должен быть согласован. Добро пока не дали, сказали решать теми средствами что уже есть. Как-то так.

whitemirror70
() автор топика
Ответ на: комментарий от whitemirror70

CDR частенько закодирован по стандарту ASN.1 с помощью BER (Basic Encoding Rules).

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.