Войти

Показать полную графическую версию : Запуск программы (перезагрузка) если сайт недоступен


denntl
29-04-2013, 13:35
Здравствуйте.

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

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

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

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

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

denntl
29-04-2013, 16:18
Буду благодарен за любое решение проблемы.

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

denntl
30-04-2013, 09:15
В таком случае будет пинг ip? Пробывал пинговать ip когда сайт недоступен, пинг проходит отлично. Т.е. сервер остановлен, а пинг проходит.

Iska
30-04-2013, 12:06
denntl, возможен выход за рамки категории «cmd/bat» или использование сторонних средств?

denntl
30-04-2013, 12:13
Да, конечно. Просто я думал это не должно быть настолько сложным.

Iska
30-04-2013, 13:24
Тогда проще всего пользовать Wget — Википедия (http://ru.wikipedia.org/wiki/Wget) и анализировать код возврата.

ITDemon
30-04-2013, 14:49
Пинговать нужно по доменному имени веб-сервера. Можно пинговать через nslookup.

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

telnet ServerName 80 (8080)

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

get /../..

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

denntl
30-04-2013, 19:45
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/statusicon/user_online.gif & if "%errorlevel%"=="1" (START C:\restart.cmd)

Iska
30-04-2013, 20:32
wget http://example.org --quiet -O -
## Получили "1" так как файл скачан ## »
Вообще-то нет: wget manual, Exit-Status (http://www.gnu.org/software/wget/manual/wget.html#Exit-Status).

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

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

Iska
30-04-2013, 21:15
Но при попытке вызова этой строчки из файла .cmd - ничего не выполняется. Такое впечатление что он запускается не из под админа, просто мелькают строки и окно погасает. »
Для отладки уберите параметр «--quiet», добавьте параметры «--verbose» и «--server-response». Добавьте в пакетный файл команду «pause», дабы окно консоли не закрывалось. И смотрите.

denntl
30-04-2013, 21:32
Решил проблему простым перетаскиванием исполняемого файла в папку Windows, спасибо огромное за помощь!

Iska
01-05-2013, 03:35
denntl, можно было решить, также просто указав полный путь к «wget.exe», например:
"%ProgramFiles%\GnuWin32\bin\wget.exe" --spider --quiet "http://www.oszone.net" || "%SystemRoot%\system32\notepad.exe"




© OSzone.net 2001-2012