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

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

mxm199 23-07-2019 13:12 2881115

curl в цикл
 
День добрый, помогите сделать скриптик проверки доступности локального ресурса, у самого какая-то ерунда получается
Имеется такая команда
Код:

curl -Is http://127.0.0.1:8081/digsign
после загрузки компьютера этот адрес отвечает минут через 5-10
Код:

HTTP/1.1 200 OK
Date: Tue, 23 Jul 2019 09:36:46 GMT
Access-control-allow-origin: *

Нужен батник, который будет висеть в автозагрузке, и при включении пк ежеминутно проверять доступность ресурса, и когда он станет доступен, то выводить сообщение на экран и прекращать свою работу.

Спасибо!

Iska 23-07-2019 18:12 2881139

mxm199, что такое «-Is»? Что значит «отвечает минут через 5-10»?

mxm199 23-07-2019 18:14 2881141

Вот наклепал такое чудо
Код:

@Echo Off

:begin

curl -Is http://127.0.0.1:8081/digsign
if errorlevel 1 (
goto begin
) else (
Msg * "Работает"
)

:stop

В принципе работает, но вопрос, как можно ограничить количество попыток, допустим 10 и установить паузу между запросами?

Цитата Iska:
Что значит «отвечает минут через 5-10» »
В принципе это не важно, но за это время поднимается локальный сервер, может и не подняться


Цитата:

Цитата Iska
«-Is» »


получить информацию заголовка HTTP

Patroklos 23-07-2019 19:24 2881151

Цитата:

Цитата mxm199
установить паузу между запросами? »

Пауза в 60 секунд:
Код:

timeout /t 60 /nobreak
Я бы посоветовал обратить внимание на утилиту HTTPing.
https://www.vanheusden.com/httping/
Код:

httping --url http://127.0.0.1 --port 8081 --count 10 --interval 60

mxm199 24-07-2019 09:25 2881203

Цитата:

Цитата Patroklos
HTTPing »

Да, спасибо, но немного не то, там свои нюансы, мне нужно проверить, что именно страничка открывается, curl для этого очень подходит.
timeout, забыл я про него, только вечером вспомнил)))

Всё же интересно как ограничить количество циклов? Может что-то с этой конструкцией

while
...
end while

но как прикрутить не понятно

Или можно как-то прицепиться к errorlevel, то есть если количество полученных errorlevel=1 достигло 10, то goto :eof ?

mxm199 24-07-2019 10:03 2881209

так напридумывал
Код:

set /a x=0

if errorlevel 1 (
set /a x+=1
if %x% == 5 goto stop

не знаю на сколько корректно, но вроде работает

megaloman 24-07-2019 14:23 2881236

mxm199, Не проверял, нету Вашей утилиты, если она выдаёт ErrorLevel, то
Код:

@Echo Off
cls
        Set /A tPause=60
        Set /A nTry=10

        FOR /L %%i IN (1,1,%nTry%) DO (
                curl -Is http://127.0.0.1:8081/digsign && (Echo +++ Соединение установлено &GoTo :Continue)
                TIMEOUT /T %tPause% /NOBREAK
        )
        Echo !!! Соединение не установлено
:Continue
Pause
Exit /B


Busla 24-07-2019 17:40 2881270

megaloman, curl не "Ваша", а штатная в современных Windows

Iska 24-07-2019 22:01 2881287

Busla, и у неё реально самопальные параметры, отсутствующие в оригинальной версии?

По факту, там надо не только errorlevel смотреть, но и разбирать содержимое ответа при errorlevel = 0. Мне так кажется.

Busla 25-07-2019 00:06 2881295

Iska, каким местом они самопальные? Ровно те же, что и в современных дистрибутивах Linux:
Код:

-I, --head          Show document info only
-s, --silent        Silent mode

Цитата:

Цитата Iska
там надо не только errorlevel смотреть, но и разбирать содержимое ответа при errorlevel = 0 »

IMHO топикстартеру скорее всего хватило бы и факта, что порт слушается

Iska 25-07-2019 13:46 2881344

Busla, я не знал, что их можно произвольно комбинировать.

Цитата:

Цитата Busla
IMHO топикстартеру скорее всего хватило бы и факта, что порт слушается »

Возможно.

Busla 25-07-2019 15:38 2881361

Цитата:

Цитата Iska
я не знал, что их можно произвольно комбинировать »

добро пожаловать в Unix

Iska 25-07-2019 19:46 2881386

Цитата:

Цитата Busla
добро пожаловать в Unix »

:lol:.


А если серьёзно, то ОС тут не при чём: возможности разбора командной строки приложением зависят только от него самого.

Busla 25-07-2019 19:58 2881389

Цитата:

Цитата Iska
А если серьёзно, то ОС тут не при чём »

Если серьёзно, то в каждой системе есть свои соглашения и сложившаяся практика. И вменяемые разработчики приложений им следуют, а невменяемые "зависят только от него самого"

Iska 25-07-2019 20:38 2881390

Цитата:

Цитата Busla
И вменяемые разработчики приложений им следуют, »

Это да.

DJ Mogarych 31-07-2019 22:17 2882180

Powershell:
Код:

$status = curl ya.ru |select -expand statusdescription
if ($status -eq 'ok') {write-host -fore green "Полный вперёд!"}
else {write-host -fore red "Полундра!"}

В Powershell curl - это алиас к команде Invoke-WebRequest.

Busla 01-08-2019 11:22 2882232

Цитата:

Цитата DJ Mogarych
В Powershell curl - это алиас к команде Invoke-WebRequest. »

так и напишите сразу Invoke-WebRequest
алиасы не для скриптов, а для упрощения интерактивного использования


Время: 22:38.

Время: 22:38.
© OSzone.net 2001-