Mit wget:
#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
echo "Online"
else
echo "Offline"
fi
Wenn die Schule tatsächlich ihren Router ausschaltet, anstatt den gesamten Datenverkehr auf eine „Warum bist du nicht im Bett“-Seite umzuleiten, dann ist es nicht nötig, eine ganze Webseite herunterzuladen oder HTTP-Header zu senden. Sie müssen lediglich eine Verbindung herstellen und prüfen, ob jemand zuhört.
nc -z 8.8.8.8 53
Dies gibt "Verbindung zu 8.8.8.8 Port 53 [tcp/domain] erfolgreich!" aus. und einen Wert von 0 zurückgeben, wenn jemand zuhört.
Wenn Sie es in einem Shell-Skript verwenden möchten:
nc -z 8.8.8.8 53 >/dev/null 2>&1
online=$?
if [ $online -eq 0 ]; then
echo "Online"
else
echo "Offline"
fi
#!/bin/bash
INTERNET_STATUS="UNKNOWN"
TIMESTAMP=`date +%s`
while [ 1 ]
do
ping -c 1 -W 0.7 8.8.4.4 > /dev/null 2>&1
if [ $? -eq 0 ] ; then
if [ "$INTERNET_STATUS" != "UP" ]; then
echo "UP `date +%Y-%m-%dT%H:%M:%S%Z` $((`date +%s`-$TIMESTAMP))";
INTERNET_STATUS="UP"
fi
else
if [ "$INTERNET_STATUS" = "UP" ]; then
echo "DOWN `date +%Y-%m-%dT%H:%M:%S%Z` $((`date +%s`-$TIMESTAMP))";
INTERNET_STATUS="DOWN"
fi
fi
sleep 1
done;
die Ausgabe erzeugt so etwas wie:
bash-3.2$ ./internet_check.sh
UP 2016-05-10T23:23:06BST 4
DOWN 2016-05-10T23:23:25BST 19
UP 2016-05-10T23:23:32BST 7
Die Zahl am Ende einer Zeile zeigt die Dauer des vorherigen Zustands an, z. B. 19 Sekunden nach oben, 7 Sekunden nach unten