Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Запуск программы (перезагрузка) если сайт недоступен (http://forum.oszone.net/showthread.php?t=259632)

denntl 29-04-2013 13:35 2141624

Запуск программы (перезагрузка) если сайт недоступен
 
Здравствуйте.

На компьютере расположен Open Server. Иногда, после перезагрузки, он не запускается сразу - лечится повторной перезагрузкой.

Также бывают случаи что он просто глючит и сайты недоступны.

Нужно написать какой-либо CMD или BAT чтобы он пинговал какой-либо файл на сайте, и если он недоступен - тогда запуск перезагрузки сервера (запуск ярлыка\программы).

Спасбо заранее!

Iska 29-04-2013 14:15 2141646

«Пинговать файл» — это, конечно, оригинальное предложение. Но лучше отправлять http-запросы веб-серверу.

denntl 29-04-2013 16:18 2141718

Буду благодарен за любое решение проблемы.

ITDemon 30-04-2013 04:07 2142044

Нельзя, т.о. проверять "доступность" файлов на сайтах в интернете.
Можно работать с ресурсами лишь серверов в домене или рабочей группе и просматривать в командной строке список открытых файлов на серверах в одной интрасети.
Чем не устраивает
ping <список узлов> & if "%errorlevel%"=="1" (START %PATH%\FILE)?

denntl 30-04-2013 09:15 2142093

В таком случае будет пинг ip? Пробывал пинговать ip когда сайт недоступен, пинг проходит отлично. Т.е. сервер остановлен, а пинг проходит.

Iska 30-04-2013 12:06 2142186

denntl, возможен выход за рамки категории «cmd/bat» или использование сторонних средств?

denntl 30-04-2013 12:13 2142188

Да, конечно. Просто я думал это не должно быть настолько сложным.

Iska 30-04-2013 13:24 2142233

Тогда проще всего пользовать Wget — Википедия и анализировать код возврата.

ITDemon 30-04-2013 14:49 2142303

Пинговать нужно по доменному имени веб-сервера. Можно пинговать через nslookup.

Еще, вариант если это возможно со стороны сервера, при наличие службы telnet клиент можно проверить доступность веб-сервера из cmd командой

telnet ServerName 80 (8080)

Если подключение успешно, запросить http-страницу командой

get /../..

С портами по протоколу SSL (https), подключение устанавливается, но данные не возвращаются.
А, так только пользоваться сторонними программами

denntl 30-04-2013 19:45 2142482

Цитата:

Iska
Тогда проще всего пользовать Wget — Википедия и анализировать код возврата.
Почитал, думаю это то, что нужно.

Помогите, пожалуйста, составить программу.

1. Скачивание файла в указанный каталог (-P)[5]:

wget -P /path/for/save ftp://ftp.example.org/some_file.iso

## Скачали файл с сайта ##

2. Вывести содержание ответа в консоль:

wget http://example.org --quiet -O -

## Получили "1" так как файл скачан ##

3. Что делать дальше? Как вызвать запуск программы если ответ "0" ? Какое расширени имеет программа, в командной строке не выполнить?


Что-то типа такого?

wget -P C:/downloads/ http://forum.oszone.net/images/statu...ser_online.gif & if "%errorlevel%"=="1" (START C:\restart.cmd)

Iska 30-04-2013 20:32 2142508

Цитата:

Цитата denntl
wget http://example.org --quiet -O -
## Получили "1" так как файл скачан ## »

Вообще-то нет: wget manual, Exit-Status.

Можно так:
Код:

wget.exe --spider --quiet "http://www.oszone.net" || "%SystemRoot%\system32\notepad.exe"
— если произошла ошибка, запустить «Блокнот», иначе ничего не делать.

denntl 30-04-2013 21:10 2142534

Вроде получилось, спасибо! Но при попытке вызова этой строчки из файла .cmd - ничего не выполняется. Такое впечатление что он запускается не из под админа, просто мелькают строки и окно погасает. Как сделать чтоб эту проверку я мог планировщикам выполнять по расписанию, что файлом все работало, а не вручную только?

Iska 30-04-2013 21:15 2142536

Цитата:

Цитата denntl
Но при попытке вызова этой строчки из файла .cmd - ничего не выполняется. Такое впечатление что он запускается не из под админа, просто мелькают строки и окно погасает. »

Для отладки уберите параметр «--quiet», добавьте параметры «--verbose» и «--server-response». Добавьте в пакетный файл команду «pause», дабы окно консоли не закрывалось. И смотрите.

denntl 30-04-2013 21:32 2142546

Решил проблему простым перетаскиванием исполняемого файла в папку Windows, спасибо огромное за помощь!

Iska 01-05-2013 03:35 2142659

denntl, можно было решить, также просто указав полный путь к «wget.exe», например:
Код:

"%ProgramFiles%\GnuWin32\bin\wget.exe" --spider --quiet "http://www.oszone.net" || "%SystemRoot%\system32\notepad.exe"


Время: 14:49.

Время: 14:49.
© OSzone.net 2001-