インターフェイスeth0が起動しているかどうかを確認します(設定済み)


30

eth0設定されているかどうかをスクリプトで確認する必要があります。その場合、スクリプトは何もしません。それ以外の場合は起動しwlan0ます。(私は両方eth0wlan0同時に望んでいません)。

eth0すでに稼働しているかどうかを確認する最も簡単な方法は何ですか?

Debian Wheezyを使用しています

明確化:

ケーブルeth0が差し込まれていることだけでなく、インターフェイスが構成されている(つまり、静的IPが設定されているか、DHCP IPを受信した)ことを確認したいと思います。ケーブルが接続されているが、eth0正しく構成されていない場合、開始したいwlan0


2
私が何を言おうとしているcat /sys/class/net/ | grep eth0かはわかりませんが、簡単に解析可能なデータを提供すべきです。あなたもすることができますsudo ethtool eth0 | grep Link
Kiwy 14年

回答:


45

あなたは多くの方法でそれをすることができます。次に例を示します。

$ cat /sys/class/net/eth0/operstate
up

5
残念ながら、これはインターフェースが完全に構成されていることを保証するものではありません。cat /sys/class/net/eth0/carrierを使用して信号を確認できますが、まだDHCPリースがない場合などがあります。
orodbhen16年

7
ip a show ethX up

何も表示されない場合、インターフェイスはダウンしています


この方法:「ip a show ethX up」と出力の確認は十分ではありません
ジョシュアクレイトン

5
ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing 

したがって、ここではgrep、関心のあるインターフェイスと"state UP"というフレーズの両方を含む行用のユビキタスipツールを使用しstdoutます(@Lekensteynに感謝します)。引数を省略形として使用します。これは、システム内のすべての構成済みネットワークカードのリストを取得するのに十分なはずです。UPaaddress

使用ipする利点の1つは、どこでも実際に使用できることです。たとえば、Androidスマートフォンのネットワークデバイスを一般的に構成する方法です。

:colons部分一致を回避するために使用されている-このように、我々はの一致を保証するeth0それ以外の場合は可能とは対照的に、someothereth0またはをeth007

@RaphaelAhrensが正しいことを教えてくれて、解決策を説明してくれてありがとう。

編集:

現在の要件を処理するには、次のことができます。

ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'

上記は、ターゲット$ifUPでプラグインされており、1つある場合にのみCIDR IPアドレスを出力します。ipv6の場合、ソリューションはわずかな変更を加えるだけで簡単です。

気に入らない場合はsed、別のもので同様の結果を達成し、最初にコンテキストオプションを|pipe ... grep追加-Aできますgrepが、私は好きsedです。


1
何をしているのか説明してください。誰もがあなたの答えから利益を得ることができるように。
ラファエルアーレンス14年

5
これでは不十分です。出力にはUP、デバイスが起動しているがケーブルが接続されていない場合も含まれます2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000。デバイスを指定して、誤検知を回避することもできますip addr show dev eth0
Lekensteyn

0

他の方法は機能しませんが、これは機能します(少なくともUbuntuでは):

while true; do
    ip route | grep "linkdown"
    if [ $? -eq 0 ]; then
        sleep 1  # network not yet up
    else
        break   # network up
    fi
done

ip routeDebian Stretch にはgrepとの「リンクダウン」はありません。
インゴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.