ネットワークの状態(オンライン/オフライン)を取得してシェルスクリプトの変数に割り当てる方法は?
答え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