Czy istnieje prosty sposób na sprawdzenie połączenia internetowego z konsoli? Próbuję się bawić w skrypcie powłoki. Wydaje mi się, że jednym z pomysłów jest sprawdzenie kodu odpowiedzi HTTP, aby zinterpretować, czy połączenie internetowe działa poprawnie. Myślę jednak, że musi istnieć prosty sposób bez konieczności sprawdzania witryny, która nigdy się nie zawiesza;)wget --spider http://www.google.co.in/
Edycja: Wydaje się, że może być wiele czynników, które można indywidualnie zbadać, dobrze. W tej chwili zamierzam sprawdzić, czy mój blog nie działa. Mam konfigurację crona, aby sprawdzał to co minutę. W tym celu sprawdzam kod odpowiedzi HTTP wget --spider na moim blogu. Jeśli nie jest to 200, powiadamia mnie (uważam, że to będzie lepsze niż pingowanie, ponieważ strona może być obciążona i może upłynąć limit czasu lub odpowiedzieć bardzo późno). Wczoraj był problem z moim Internetem. Sieć LAN była podłączona dobrze, ale po prostu nie mogłem uzyskać dostępu do żadnej strony. Wciąż otrzymuję powiadomienia, ponieważ skrypt nie może znaleźć 200 w odpowiedzi wget. Teraz chcę się upewnić, że wyświetla mi powiadomienie, gdy mam połączenie z Internetem.
Dlatego sprawdzanie łączności z DNS i LAN jest dla mnie trochę przesadne, ponieważ nie mam tak konkretnej potrzeby, aby dowiedzieć się, na czym polega problem. Więc co sugerujesz, jak to robię?
Oto mój skrypt do sprawdzania przestojów mojego bloga:
#!/bin/bash
# Sending the output of the wget in a variable and not what wget fetches
RESULT=`wget --spider http://blog.ashfame.com 2>&1`
FLAG=0
# Traverse the string considering it as an array of words
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means all good
fi
done
if [ $FLAG -eq '0' ]; then
# A good point is to check if the internet is working or not
# Check if we have internet connectivity by some other site
RESULT=`wget --spider http://www.facebook.com 2>&1`
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means we do have internet connectivity and the blog is actually down
fi
done
if [ $FLAG -eq '1' ]; then
DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."
fi
fi
exit
W ten sposób muszę sprawdzić łączność z Internetem tylko tam, gdzie występuje problem z kodem odpowiedzi mojego bloga. Jest trochę ciężki (ponieważ nie używam pinga), ale nie powinien dawać żadnych fałszywych alarmów. Dobrze? Również w jaki sposób mogę za każdym razem losować pingowanie do innej witryny, np. Facebook, Google, Yahoo itp. Ponadto (starałem się unikać jakichkolwiek operacji we / wy) mogę zapisać plik dziennika, dzięki któremu mogę sprawdzić liczbę kontroli przestojów i następnie pomiń kolejne kontrole, dopóki witryna nie będzie działała lub spowoduj dłuższe kontrole (10 minut zamiast co minutę). Co myślisz?