GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでbashスクリプトを使用してインターネットアクセスをチェックするには?

wget の使用:

#!/bin/bash

wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
        echo "Online"
else
        echo "Offline"
fi

学校がすべてのトラフィックを「ベッドにいない理由」ページにリダイレクトするのではなく、実際にルーターをオフにしている場合、Web ページ全体をダウンロードしたり、HTTP ヘッダーを送信したりする必要はありません。接続を確立して、誰かが聞いているかどうかを確認するだけです。

nc -z 8.8.8.8 53

これにより、「8.8.8.8 ポート 53 [tcp/ドメイン] への接続に成功しました!」と出力されます。誰かが聞いている場合は値 0 を返します。

シェル スクリプトで使用する場合:

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;

出力は次のようになります:

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

行末の数字は、前の状態の継続時間を示します。つまり、19 秒アップ、7 秒ダウン


Linux
  1. Bashスクリプトをデバッグする方法は?

  2. Linux – LinuxでIptablesを使用して、LAN上の特定のユーザーのインターネットアクセスを制限する方法は?

  3. シェルスクリプトBashでサブストリングをチェックする方法は?

  1. Linux の Bash で syslog を確認するには?

  2. bashスクリプトを使用してcrontabジョブをcrontabに追加するには?

  3. Linux で iptables を使用して LAN 上の特定のユーザーのインターネット アクセスを制限する方法

  1. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  2. LinuxのbashコマンドをPERLスクリプトで実行する方法は?

  3. Linux コマンドを使用して OS とバージョンを確認する方法