![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
greenod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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; Заранее спасибо |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
||||
|
||||
greenod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.2.2008 Репутация: нет Всего: нет |
Дело в том, что здесь лежат 2 файла c:\temp\LOG_0000000014_2_DMC.TXT и LOG_0000000014_2_SMS.TXT А читать нужно только из одного LOG_0000000014_2_DMC.TXT. А когда я пишу LOG_00000000*.TXT -то не работает. А если я напишу LOG_00000000* - то perl не поймет какой файл из двух нужно читать |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Тогда вопользуйся перебором всех файлов в папке и определи, какой тебе нужен, а потом уже открывай его open-ом
|
|||
|
||||
greenod |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.2.2008 Репутация: нет Всего: нет |
Спасибо за совет. Я думал что можно заменять буквы в файле * и ?. А как сделать этот перебор в моем случае? |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
$start_dir="x:/temp/";
opendir ( FDIR, $base_dir); while( $name=readdir FDIR ){ print"$name \n"; } closedir(FDIR); |
|||
|
||||
ginnie |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
greenod, а что выведет
после
и исправь
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |