PERL-скрипт
Добрый день, нужно сделать скрипт на v5.10.1 (не выше)
- Скрипт должен просматривать раз в минуту некий файл логов
- выбирать строки с нужными значениями(не точное значение, а встречающееся, пример grep) которые можно задавать в переменной и игнорировать некие значения заданные в ручную
- скрипт после сканирования файла должен запоминать позицию и через минуту в след раз должен начинать чтение файла с этой позиции до конца и опять запоминать позицию и т.п. (позицию можно записывать в новый файл)
файлы больших размеров.
-если кол-во строк от указанного положения до конца файла превышает заданные параметры - прекратить выполнение(нельзя считывать все строки файла, файлы могут быть очень больших размеров и скрипт не уложится в минуту, может накладываться друг на друга)
- принудительное завершение скрипта если он через 59 сек не выполнился по какой то причине,в таком случае вывод в консоль значения 999
-вывод скрипта в консоль - кол-во строк от грепаных по условию (пример wc)
так же скрипт по завершению отправлять на почту по заданному smtp (localhost) 10 чаще всего употребляемых строк отгрепанных за эту минуту (пример команды | sort | uniq -c | sort -k 1 -nr | head -n 10), так же нужна возможность отключения функции отправки на почту, оставить только вывод в консоль ко-во строк.
раз в минуту скрипт запускается по крону, его в цикл ставить не нужно.
Скрипт должен быть чисто на перле без bash
примерный план скрипта
#!/sbin/perl
$строка выборки
$строка игнорирования
$строка игнорирования2
$переменная временного файла для запоминания строки
$переменная задающая максимальное кол-во строк для чтения
$максимальное время выполнения
$переменная задающая значение 999 если скрипт превысил интервал выполнения переменной $максимальное время выполнения
$переменная включения, выключения отправки на почту отчета
{КОД}
P.S
предложения, пожелания, возможные баги будут вашим плюсом )