Jak uruchomić Safari na stronie przeglądarki tylko wtedy, gdy błąd 502 przestaje się pojawiać?

3

Mam sytuację, w której jeśli wypchnę aktualizację do instancji w Internecie, kompilacja zajmie 3-5 minut, a następnie, gdy kompilacja zakończy się pomyślnie, instancja wyśle błąd 502 na kilka minut przed nią zacznie działać ponownie.

Szukam rozwiązania, w którym instancja (adres URL serwera) będzie sprawdzana co około 5 sekund, a gdy przestanie odpowiadać 502 , Safari uruchomi się.

Masz pomysł, jak to zrobić? Do tej pory na terminalu mogę uruchomić to:

curl -I http://url 2>/dev/null | head -n 1 | cut -d$' ' -f2

i to wyświetli odpowiedź portu HTTP lub cokolwiek, ale nie jestem wystarczająco bystry, aby „robić to co 5 sekund” lub zdefiniować „Jeśli (wynikowa odpowiedź) to X, powtarzaj pętlę, ale jeśli (wynikowa odpowiedź) to Y, a następnie uruchom Safari z adresem URL ”.

Jakieś pomysły?

esaruoho
źródło

Odpowiedzi:

3

„Szybki i brudny” skrypt do osiągnięcia tego, co chcesz zrobić, można napisać jako:

#!/bin/bash

url = "http://url"
code=`curl -I $url 2>/dev/null | head -n 1 | cut -d$' ' -f2`

while [ "$code" == 502 ]
do
  sleep 5
  echo trying again
  code=`curl -I $url 2>/dev/null | head -n 1 | cut -d$' ' -f2`
done

open -a Safari $url

Zasadniczo to robi wartość, którą wyprowadzasz w zmiennej o nazwie code. Następnie ocenia tę zmienną w pętli While / Do co 5 sekund, aż wartość się zmieni. Gdy to nastąpi, istnieje pętla i uruchamia instancję Safari wskazującą na adres URL.

Allan
źródło
Dzięki za rozwiązanie większości problemu - to wystarczy, aby pomóc mi w przyszłości. Oczywiście, naprawdę nie ma możliwości pójścia „cóż, ładuje się dobrze, ale z poprzednią wersją przez następne 3 minuty, więc kontynuuj pingowanie, dobra, teraz strzela 502, dobra, kontynuuj pingowanie… a teraz ładuje się ponownie, więc uruchom safari z adresem URL ”. Jakieś pomysły na ten @Allan?
esaruoho
1
Jeśli ma to działać w sposób ciągły, musisz uruchomić go w tle i wyłączyć. Wykonaj go, wydając polecenie: script.sh & disown (skrypt.sh to nazwa skryptu). Będziesz musiał zmodyfikować pętlę, aby się nigdy nie kończyła, ale dodaj zaznaczenie (jeśli / to) kodu 200, który wywoła Safari. Jeśli chcesz, aby uruchamiał się na przykład co 30 minut (prawdopodobnie lepiej), dodaj go do cron(Linux / BSD / Unix) lub launchdna komputerze Mac.
Allan