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

Исходное сообщение
"SH-Скрипт для проверки сайтов но доступность"

Отправлено ALUM , 04-Июн-08 16:45 
Есть таблица в MySQL
в ней три поля ID, URL, STATUS
URL типа: http://web.errpo.it:7080/erty/navy?KEY=START , т.е сервак сам может и стоит (ping пингуется), а вот по указанному порту сервис не доступен.

Надо слобать скрипт для crona, который бы брал URL, проверял на доступность и апдейтил STATUS.

Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.


Содержание

Сообщения в этом обсуждении
"SH-Скрипт для проверки сайтов но доступность"
Отправлено madskull , 04-Июн-08 17:43 
>Надо слобать скрипт для crona, который бы брал URL, проверял на доступность
>и апдейтил STATUS.

с помощью команды mysql достаем/апдейтим нужные данные.
с помощью, например, wget пытаемся скачать страницу

>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.

Так от нас то что требуется?


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 05-Июн-08 10:05 
>>Надо слобать скрипт для crona, который бы брал URL, проверял на доступность
>>и апдейтил STATUS.
>
>с помощью команды mysql достаем/апдейтим нужные данные.
>с помощью, например, wget пытаемся скачать страницу
>
>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>
>Так от нас то что требуется?

Как вызвать wget из Perl ?


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 05-Июн-08 10:38 
>[оверквотинг удален]
>>>и апдейтил STATUS.
>>
>>с помощью команды mysql достаем/апдейтим нужные данные.
>>с помощью, например, wget пытаемся скачать страницу
>>
>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>
>>Так от нас то что требуется?
>
>Как вызвать wget из Perl ?

и почему не работает вот это?

  $Tmpnam="/var/tmp/wget_epr_file";
  open(FN,">$Tmpnam");
  binmode (FN);
  read FN $Wget_epr; #если написать print - работает на вывод.
  close(FN);


"SH-Скрипт для проверки сайтов но доступность"
Отправлено GD , 05-Июн-08 11:54 
>>[оверквотинг удален]
>>>>и апдейтил STATUS.
>>>
>>>с помощью команды mysql достаем/апдейтим нужные данные.
>>>с помощью, например, wget пытаемся скачать страницу
>>>
>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>Как вызвать wget из Perl ?

:)

>
>и почему не работает вот это?
>
>  $Tmpnam="/var/tmp/wget_epr_file";
>  open(FN,">$Tmpnam");
>  binmode (FN);
>  read FN $Wget_epr; #если написать print - работает на вывод.
>
>  close(FN);

а что ты хочешь считать из пустого файла?


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 05-Июн-08 12:39 
>[оверквотинг удален]
>>и почему не работает вот это?
>>
>>  $Tmpnam="/var/tmp/wget_epr_file";
>>  open(FN,">$Tmpnam");
>>  binmode (FN);
>>  read FN $Wget_epr; #если написать print - работает на вывод.
>>
>>  close(FN);
>
>а что ты хочешь считать из пустого файла?

он будет не пустой
туда до этого WGET сгрузит страничку:

$Epr_file_name = "/var/tmp/wget_epr_file";

$Wget_epr = "";
system("/usr/local/bin/wget --quiet --tries=1 --connect-timeout=3 --output-file=$Epr_file_name \"$Url\"");
            
open FN, "$Epr_file_name" || die "Файл не найден!";
foreach( <FN> )
{ $Wget_epr .= $_; }
close FN;
  
if ($Wget_epr ne "")
{...}
else
{...}

только проблема
WGET вызываемый из PERL сообщения об ошибках ("нет коннекта например") выводит всё в тот файл и не получается определить, жив сайт или нет. если WGET вызывать с опцией --quiet он вообще ничего в файл не выводит, ни ошибок, ни страницу сайта даже если он жив.
При вызовы из просто командной строки - всё работает замечательно как надо. ошибки - на экран, загрузка - в файл. если включаю --QUIET ошибки выключаются, загрузка тем не менее в файл.

Код:


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 05-Июн-08 13:12 
кароче жопа
оказалось этот вредный WGET не желает воспринимать некоторые длинные ключи (причём только из ПЕРЛа!)
пришлось переписать на короткие

system("/usr/local/bin/wget -q --tries=1 --connect-timeout=3 -O $Eper_file_name \"$Url\"");


"SH-Скрипт для проверки сайтов но доступность"
Отправлено angra , 06-Июн-08 07:57 
Да, злой ПЕРЛ во всем виноват, даже в том что вы не знаете про LWP(а также LWP::Parallel) и используете wget, причем вызываете его отдельно для каждого сайта. А еще ПЕРЛ будет виноват в том, что в результате скорость проверки будет просто черепашьей особенно при значительном увеличении количества проверяемых сайтов. На неумение проверять файл на пустоту без его открытия и считывать из файла всего содержимого за раз можно даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.

"SH-Скрипт для проверки сайтов но доступность"
Отправлено Pahanivo , 06-Июн-08 09:52 
>Да, злой ПЕРЛ во всем виноват, даже в том что вы не
>знаете про LWP(а также LWP::Parallel) и используете wget, причем вызываете его
>отдельно для каждого сайта. А еще ПЕРЛ будет виноват в том,
>что в результате скорость проверки будет просто черепашьей особенно при значительном
>увеличении количества проверяемых сайтов. На неумение проверять файл на пустоту без
>его открытия и считывать из файла всего содержимого за раз можно
>даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.
>

гыгыгы )) поддерживаю.
для начала сходить на perl.com ...

Разместить на каждом сайте маленький текстовый файл - посчитать его md5.
По списку при помощи LWP дергать его с сайта и сверять сумму.
С мускулом все элементарно и стандартно. Тупой апдейт базы. ВСЕ!


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 06-Июн-08 11:19 
>[оверквотинг удален]
>>даже не обращать внимание, так мелочи, всего лишь нежелание читать документацию.
>>
>
>гыгыгы )) поддерживаю.
>для начала сходить на perl.com ...
>
>Разместить на каждом сайте маленький текстовый файл - посчитать его md5.
>По списку при помощи LWP дергать его с сайта и сверять сумму.
>
>С мускулом все элементарно и стандартно. Тупой апдейт базы. ВСЕ!

УМНИКИ!
САЙТЫ НЕ МОИ!
НИЧЕГО Я ТУДА ПОЛОЖИТЬ НЕ МОГУ!

СПАСИБО!


"SH-Скрипт для проверки сайтов но доступность"
Отправлено angra , 07-Июн-08 06:05 
Это как то отменяет ваше неумение работать с perl и как следствие ругань на него? Вызов внешних программ в перловом скрипте лучше минимизировать, иначе зачем перл вообще нужен, проще/понятней на шелле сделать. Кстати даже на шелл можно было бы обойтись одним вызовом wget, хотя если проверять аж два сайта, то таки да не нужно, как и БД.



"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 09-Июн-08 16:54 
>Это как то отменяет ваше неумение работать с perl и как следствие
>ругань на него? Вызов внешних программ в перловом скрипте лучше минимизировать,
>иначе зачем перл вообще нужен, проще/понятней на шелле сделать. Кстати даже
>на шелл можно было бы обойтись одним вызовом wget, хотя если
>проверять аж два сайта, то таки да не нужно, как и
>БД.

дело в том что мне не только проверять а выцеплять определённую строку (версию софта). список примерно 15 сайтов, с каждым по очереди.


"SH-Скрипт для проверки сайтов но доступность"
Отправлено angra , 09-Июн-08 18:09 
Ну так посмотрите наконец на LWP. Намного быстрее, да и проще будет скачать при помощи него в скаляр и тут же его распарсить вместо того, чтобы вызывать внешний wget, а потом читать файл. В LWP нет ничего сложного, гляньте хотя бы синопсис по этой ссылке:
http://search.cpan.org/~gaas/libwww-perl-5.812/lib/LWP/UserA...
Для 15 сайтов можно оставить и в таком виде, если количество станет расти, то используется LWP::Parallel, то есть несколько десятков запросов посылаются одновременно, что значительно ускоряет работу.


"SH-Скрипт для проверки сайтов но доступность"
Отправлено Pahanivo , 07-Июн-08 14:38 
МОТОРОЛЛЕР НЕ МОЙ! Я ПРОСТО РАЗМЕСТИЛ ОБЪЯВУ!


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ШУхарт , 06-Июн-08 13:03 
>[оверквотинг удален]
>>>и апдейтил STATUS.
>>
>>с помощью команды mysql достаем/апдейтим нужные данные.
>>с помощью, например, wget пытаемся скачать страницу
>>
>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>
>>Так от нас то что требуется?
>
>Как вызвать wget из Perl ?

А зачем тебе Perl? По-моему, удобней просто shell-скрипт.


"SH-Скрипт для проверки сайтов но доступность"
Отправлено ALUM , 06-Июн-08 14:35 
>[оверквотинг удален]
>>>с помощью команды mysql достаем/апдейтим нужные данные.
>>>с помощью, например, wget пытаемся скачать страницу
>>>
>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>>
>>>Так от нас то что требуется?
>>
>>Как вызвать wget из Perl ?
>
>А зачем тебе Perl? По-моему, удобней просто shell-скрипт.

поздняк метаццо. всё уже готово.


"SH-Скрипт для проверки сайтов но доступность"
Отправлено TrEK , 03-Апр-13 11:21 
>[оверквотинг удален]
>>>>с помощью, например, wget пытаемся скачать страницу
>>>>
>>>>>Теряюсь в непонятках. Но знаю, как работать с MySQL + Perl.
>>>>
>>>>Так от нас то что требуется?
>>>
>>>Как вызвать wget из Perl ?
>>
>>А зачем тебе Perl? По-моему, удобней просто shell-скрипт.
> поздняк метаццо. всё уже готово.

Ну так напиши здесь, или ты по методу "Я сам все решил, и фиг расскажу!"