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

インターフェイス eth0 が稼働しているかどうかを確認します (構成済み)

あなたはそれを多くの方法で行うことができます。以下に例を示します:

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

ip a show ethX up

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


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

ここで grep どこにでもある ip ツールの stdout 対象のインターフェースとフレーズ "state UP" の両方を含む行の場合 ( UP よりももう少し特異性の必要性を指摘してくれた @Lekensteyn に感謝します ) 引数 a を使用します address の短縮形として これで、システム内のすべての構成済みネットワーク カードのリストを取得するのに十分なはずです。

ip を使用する利点の 1 つ どこでも利用できるようにする必要があるのか​​もしれません。たとえば、Android フォンのネットワーク デバイスを一般的に構成する方法です。

:colons 部分一致を避けるために使用されます - このようにして eth0 の一致を保証します そうでなければ可能な someothereth0 とは対照的に または eth007 .

@RaphaelAhrens が、私を正しい方向に動かし、解決策を説明してくれてありがとう。

編集:

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

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

上記は、ターゲット $if の場合にのみ CIDR IP アドレスを出力します。 稼働中です プラグインされており、1 つ持っています。 ipv6 の場合、ソリューションは簡単で、わずかな変更のみです。

sed が気に入らない場合 別の |pipe ... grep で同様の結果を得ることができます -A を追加 context オプションを最初の grep - でも私は sed が好きです .


Linux
  1. Linux –イーサネットインターフェイスがEth0ではなくEnp0s10と呼ばれるのはなぜですか?

  2. 再帰的にgrepするにはどうすればよいですか?

  3. シェル スクリプトが実行されているかどうかを確認する Linux コマンド

  1. 特定のインターフェースで cURL を使用する方法

  2. NIC インターフェース (eth0 / eth1) ごとに DNS サーバーを構成しますか?

  3. Linux で eth0 インターフェース名は何を意味しますか?

  1. Grep -v予期しない動作?

  2. イーサネット インターフェイスが eth0 ではなく enp0s10 と呼ばれるのはなぜですか?

  3. wlan0 から eth0 へのブリッジ