URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6390
[ Назад ]

Исходное сообщение
"tail -f  на STDIN перлового скрипта."

Отправлено bingo2 , 18-Апр-07 21:26 
привет.
есть программа, которая как не странно пишет лог :)
есть перловый скрипт, который его парсит.

задача:
получать последние строки из лога по
ssh login@server "tail -f"  и передавать на STDIN перловому скрипту.

что посоветуете? через простой пайп не работает, sleep очень не хочется ставить.
пока поставил перенаправление в файл, а уже оттуда беру, но это не вариант =(


Содержание

Сообщения в этом обсуждении
"tail -f  на STDIN перлового скрипта."
Отправлено bill , 18-Апр-07 21:59 
>привет.
>есть программа, которая как не странно пишет лог :)
>есть перловый скрипт, который его парсит.
>
>задача:
>получать последние строки из лога по
>ssh login@server "tail -f"  и передавать на STDIN перловому скрипту.
>
>что посоветуете? через простой пайп не работает, sleep очень не хочется ставить.
>
>пока поставил перенаправление в файл, а уже оттуда беру, но это не
>вариант =(


open (TAIL,"ssh login\@server tail -f |");
while (<TAIL>) {
...

или так?
while(<>) {
...

ssh login@server tail -f | ./prog.pl


"tail -f  на STDIN перлового скрипта."
Отправлено bingo2 , 19-Апр-07 12:13 
>>привет.
>>есть программа, которая как не странно пишет лог :)
>>есть перловый скрипт, который его парсит.
>>
>>задача:
>>получать последние строки из лога по
>>ssh login@server "tail -f"  и передавать на STDIN перловому скрипту.
>>
>>что посоветуете? через простой пайп не работает, sleep очень не хочется ставить.
>>
>>пока поставил перенаправление в файл, а уже оттуда беру, но это не
>>вариант =(
>
>
>open (TAIL,"ssh login\@server tail -f |");
>while (<TAIL>) {
>...
>
>или так?
>while(<>) {
>...
>
>ssh login@server tail -f | ./prog.pl

не работает не так, не так =(
win/cygwin


"tail -f  на STDIN перлового скрипта."
Отправлено chip , 19-Апр-07 16:07 
>привет.
>есть программа, которая как не странно пишет лог :)
>есть перловый скрипт, который его парсит.
>
>задача:
>получать последние строки из лога по
>ssh login@server "tail -f"  и передавать на STDIN перловому скрипту.
>
>что посоветуете? через простой пайп не работает, sleep очень не хочется ставить.
>
>пока поставил перенаправление в файл, а уже оттуда беру, но это не
>вариант =(

use File::Tail;
http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm


"tail -f  на STDIN перлового скрипта."
Отправлено bingo2 , 20-Апр-07 12:11 
>>привет.
>>есть программа, которая как не странно пишет лог :)
>>есть перловый скрипт, который его парсит.
>>
>>задача:
>>получать последние строки из лога по
>>ssh login@server "tail -f"  и передавать на STDIN перловому скрипту.
>>
>>что посоветуете? через простой пайп не работает, sleep очень не хочется ставить.
>>
>>пока поставил перенаправление в файл, а уже оттуда беру, но это не
>>вариант =(
>
>use File::Tail;
>http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm

спасибо. буду знать...

попытался разобраться с модулем - но с оптимальными параметрами проблемы (задал все интрервалы=0|1 - всё равно задержки вывода порядка 10 секунд)...

нашёл решение на одном форуме

use IO::File;
use strict;
my $tail = new IO::File;
$tail->open("<operations.log");
while(1){
  my @lines=$tail->getlines();
  if(0==scalar(@lines)){
    sleep 1;
  }else{
    my $line;
    foreach $line(@lines){
      chomp $line;
      print "$line\n";
    }
  }
}