Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с задачей 
:(
    Опции темы
greenod
Дата 28.2.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



Добрый день.
Я новичек Perl-а, и нужно решить для меня очень  сложную задачу на этом языке.

Задачка такая:
Нужно считать информацию с удаленных компьютеров и составить отчет.
Например:
Компьютеры (192.168.0.2, 192.168.0.3, 192.168.0.5, 192.168.1.10) Список
В каждом компьютере есть один и тот же путь к файлу (c:\temp\)
В 192.168.0.2 - c:\temp\LOG_0000000014_2_DMC.TXT
В 192.168.0.3 - c:\temp\LOG_0000000014_3_DMC.TXT
В 192.168.1.10 - c:\temp\LOG_0000000016_10_DMC.TXT (Компьютер находится в др месте)

Таких компьютеров очень много, думаю нужно использовать маску как в Винде для файла LOG_00000000*DMC.TXT 
 
Это лог файл в котором нужно считать последнюю строку. (Файл постоянно обновляется и накапливается.)
####################################################
27.02.2008 7:00:07 : Start Download Manager Client (Version 3.0.19)
27.02.2008 7:00:08 : Remove temporary files and folders
27.02.2008 7:00:08 : Finished with success. 
####################################################

Последняя строка всегда записывается приблизительно в 7:00 утра пишет:
Finished with success. или Finished with error.

На основе этой строки нужно составить отчет:
##############
#   14    ####  16  #
##############
#2 - ok          # 10 -ok
#3 - ok          #
#5 - not ok    #      
#           
###############
Т.е если "Finished with success." в 7:12 или 7:14 (минуты всегда по разному) то написать "OK"
А если Finished with  error. или вообще такой строки или файла нет то "not ok"



Вот что я пытался 
#*****************************Search date*******************
@timeData = localtime(time);
$timeData[5]+=1900; $timeData[4]+=1; 
my $Datestr = "$timeData[3].0$timeData[4].$timeData[5]";

#***********************************************************
# x:\ предварительно подключал в cmd на удаленный комп

my $filename = (<LOG_00000000*DMC.TXT>);# почему то не работает)))

open file, (<x:/temp/>).$filename 
or die qq{Error "$filename": $! };

while (<file>)
{

print "ok" if m/$Datestr/ && /success/;
print "not ok" if m/$Datestr/ && /error/; 

}
close file; 

Заранее спасибо
PM MAIL   Вверх
Itsys
Дата 28.2.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



Смотри Сюда.

А для получения последней строки проще воспользоваться функцией pop
PM MAIL WWW Skype   Вверх
greenod
Дата 28.2.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



Цитата(greenod @ 28.2.2008,  10:34)
Добрый день.
Я новичек Perl-а, и нужно решить для меня очень  сложную задачу на этом языке.

Задачка такая:
Нужно считать информацию с удаленных компьютеров и составить отчет.
Например:
Компьютеры (192.168.0.2, 192.168.0.3, 192.168.0.5, 192.168.1.10) Список
В каждом компьютере есть один и тот же путь к файлу (c:\temp\)
В 192.168.0.2 - c:\temp\LOG_0000000014_2_DMC.TXT
В 192.168.0.3 - c:\temp\LOG_0000000014_3_DMC.TXT
В 192.168.1.10 - c:\temp\LOG_0000000016_10_DMC.TXT (Компьютер находится в др месте)

Таких компьютеров очень много, думаю нужно использовать маску как в Винде для файла LOG_00000000*DMC.TXT 
 
Это лог файл в котором нужно считать последнюю строку. (Файл постоянно обновляется и накапливается.)
####################################################
27.02.2008 7:00:07 : Start Download Manager Client (Version 3.0.19)
27.02.2008 7:00:08 : Remove temporary files and folders
27.02.2008 7:00:08 : Finished with success. 
####################################################

Последняя строка всегда записывается приблизительно в 7:00 утра пишет:
Finished with success. или Finished with error.

На основе этой строки нужно составить отчет:
##############
#   14    ####  16  #
##############
#2 - ok          # 10 -ok
#3 - ok          #
#5 - not ok    #      
#           
###############
Т.е если "Finished with success." в 7:12 или 7:14 (минуты всегда по разному) то написать "OK"
А если Finished with  error. или вообще такой строки или файла нет то "not ok"



Вот что я пытался 
#*****************************Search date*******************
@timeData = localtime(time);
$timeData[5]+=1900; $timeData[4]+=1; 
my $Datestr = "$timeData[3].0$timeData[4].$timeData[5]";

#***********************************************************
# x:\ предварительно подключал в cmd на удаленный комп

my $filename = (<LOG_00000000*DMC.TXT>);# почему то не работает)))

open file, (<x:/temp/>).$filename 
or die qq{Error "$filename": $! };

while (<file>)
{

print "ok" if m/$Datestr/ && /success/;
print "not ok" if m/$Datestr/ && /error/; 

}
close file; 

Заранее спасибо

Дело в том, что здесь лежат 2 файла c:\temp\LOG_0000000014_2_DMC.TXT и LOG_0000000014_2_SMS.TXT 
А читать нужно только из одного LOG_0000000014_2_DMC.TXT.
А когда я пишу LOG_00000000*.TXT -то не работает. А если я напишу LOG_00000000* - то perl не поймет какой файл из двух нужно читать 
PM MAIL   Вверх
Itsys
Дата 28.2.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



Тогда вопользуйся перебором всех файлов в папке и определи, какой тебе нужен, а потом уже открывай его open-ом
PM MAIL WWW Skype   Вверх
greenod
Дата 28.2.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



Цитата(Itsys @ 28.2.2008,  11:20)
Тогда вопользуйся перебором всех файлов в папке и определи, какой тебе нужен, а потом уже открывай его open-ом

Спасибо за совет. Я думал что можно заменять буквы в файле * и ?. 
А как сделать этот перебор в моем случае?
PM MAIL   Вверх
Itsys
Дата 28.2.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



$start_dir="x:/temp/"; 

opendir ( FDIR, $base_dir); 
while( $name=readdir FDIR ){ 
print"$name \n"; 

closedir(FDIR); 

PM MAIL WWW Skype   Вверх
ginnie
Дата 28.2.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



greenod, а что выведет

Код

warn $filename;


после

Код

my $filename = (<LOG_00000000*DMC.TXT>);


и исправь

Код

open file, 'x:/temp/'.$filename
or die qq{Error "$filename": $! };




--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.