Страница 1 из 1

Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 18:08:00
levantuev
Здравствуйте! У меня две задачи. Помогите люди умный и добрые их решить.

1. Мне необходимо как-то понять какие НОВЫЕ строки появились за последние 10 секунд в файле,
2. Получится многострочный результат и этот результат вывести в роли переменной каждую строку.


Привожу пример:

В /var/log/messages постоянно пишется информация.

1. Нужно как-то вычислить что за 10 секунд появились новые строки такого вида:

Код: Выделить всё

Server kernel: pid 71863 (httpd), uid 0: exited on signal 10 (core dumped)
Server last message repeated 2 times
Server last message repeated 2 times
Server last message repeated 2 times
2. Каждую строку объявить в роли переменной, допустим $str[1], $str[2], $str[3], $str[4].....

?????

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 18:40:04
mak_v_
man tail

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 19:24:34
levantuev
mak_v_ писал(а):man tail
надеюсь вы не имеете ввиду tail -n !!!!! Изъясните поконкретнее ваше предложение...

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 19:51:52
levantuev
С первой проблемой разобрался путем использование logtail , теперь нужно понять как сделать пермеменной каждую строку.

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 20:14:41
mak_v_
levantuev писал(а):
mak_v_ писал(а):man tail
надеюсь вы не имеете ввиду tail -n !!!!! Изъясните поконкретнее ваше предложение...
За Вас писать скрипт? Нет уж, извольте читать маны. Я Вам направление подбрасываю где почитать.

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 20:18:21
levantuev
mak_v_ писал(а):
levantuev писал(а):
mak_v_ писал(а):man tail
надеюсь вы не имеете ввиду tail -n !!!!! Изъясните поконкретнее ваше предложение...
За Вас писать скрипт? Нет уж, извольте читать маны. Я Вам направление подбрасываю где почитать.
не вижу направление "где" вижу направление "что" :smile:

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 20:19:41
mak_v_
Попробуйте почитать умные книги, сходить на курсы, сдать экзамены и практика..практика...глядишь и прозреете

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 20:25:34
levantuev
mak_v_ писал(а):Попробуйте почитать умные книги, сходить на курсы, сдать экзамены и практика..практика...глядишь и прозреете
зачем?

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 20:33:00
levantuev
Вопрос почти решен:

Код: Выделить всё

#!/bin/sh
vars=`/usr/local/bin/logtail /var/log/messages`
for i in $vars; do fetch "http://127.0.0.1/?res=$i" >/dev/null 2>&1; done
Только вот for читает по словам а не по строкам. Как сделать что-бы по строкам считал? а так все отлично работает...

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 22:10:49
FiL
read

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-22 22:45:00
levantuev
FiL писал(а):read

Код: Выделить всё

vars=`/usr/local/bin/logtail /var/squid/logs/access.log | awk '{print $8 " | " $3 " | " $7}' > file`
while read LINE; do
   fetch "http://127.0.0.1/?res=$LINE" >/dev/null 2>&1
done < file
РЕШЕНО!

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-23 10:03:15
kpp
Гм..
А где отслеживание
строки появились за последние 10 секунд в файле
?

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-23 11:04:52
levantuev
kpp писал(а):Гм..
А где отслеживание
строки появились за последние 10 секунд в файле
?
Решит это: Как тут писал очень умный человек :ROFL:

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-23 11:21:55
kpp
levantuev писал(а):
kpp писал(а):Гм..
А где отслеживание
строки появились за последние 10 секунд в файле
?
Решит это: Как тут писал очень умный человек :ROFL:
"Это" отобразит последние n строк из файла.
В Вашем, levantuev, решении я тоже не наблюдаю выборку именно за последние 10 секунд.
Поэтому что именно решено, и почему именно logtail (которой нет по дефолту во FreeBSD), а не просто tail, не понятно.

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-23 16:28:59
FiL
kpp писал(а):Гм..
А где отслеживание
строки появились за последние 10 секунд в файле
?
-s 10

Собственно, как я понимаю, это единственное преимущество перед tail -f. Позволяет задать интервал проверки.

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-10-23 16:51:16
mak_v_
на сколько я понял, человек пишет с нуля анализатор логов для сквида...так сказать "злобно парсит логи и мозг".
tail как и sarg, free-sa, ligtsquid, squidpb, stc и многие другие просто и иронично тупо не подходят очень умным.

Re: Вывести в роли переменной каждую строку

Добавлено: 2012-11-20 16:09:57
mak_v_
иПАТЬ.....БЕЙТЕ ИХ