ネットワークの状態(オンライン/オフライン)を取得してシェルスクリプトの変数に割り当てる方法は?

ネットワークの状態(オンライン/オフライン)を取得してシェルスクリプトの変数に割り当てる方法は?

ネットワークの状態(オンライン/オフライン)を取得してシェルスクリプトの変数に割り当てる方法は?

答え1

私はipもう一度お勧めします:

status=$(ip -o link show eth0 | awk '{print $9}')

(9番目の列はインターフェースの状態です)

答え2

ネットワーク接続にネットワークマネージャを使用している場合は、次のようにdbusを介してクエリできます。

dbus-send --type=method_call --print-reply --system --dest="org.freedesktop.NetworkManager" "/org/freedesktop/NetworkManager" org.freedesktop.NetworkManager.state

(一部は廃止されましたが、まだ機能します。最新のインターフェースの場合は、別のアドレスを照会するだけです。)

「3」が返されると、説明したように「接続」されたものです。http://projects.gnome.org/NetworkManager/developers/spec.html#type-NM_STATE(しかし、インターネット接続は言及されていません)。

インターネットに接続していることを本当に知りたい場合は、リモートサーバー(google.comなど)でpingを実行して機能していることを確認してください。

答え3

もう1つ...古いNICの場合、mii-toolコマンドが便利です。

答え4

インターフェイスのオンライン/オフライン状態だけが欲しく、速度やリンクタイプは気にしないと言われました。

努力するネットワークツール、ルートとして:

# ethtool eth0 |grep "Link detected"
  Link detected: yes
# ethtool eth1 |grep "Link detected"
  Link detected: no

ifconfigオンライン/オフラインのステータスも表示でき、通常はシステムのすべてのユーザーがコマンドを使用できます。

$ { /sbin/ifconfig eth0 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
0
# This could return some false errors
$ { /sbin/ifconfig eth1 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
1

関連情報