GNU/Linux >> Belajar Linux >  >> Linux

periksa apakah antarmuka eth0 sudah habis (dikonfigurasi)

Anda bisa melakukannya dengan banyak cara. Ini contohnya:

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

ip a show ethX up

Jika tidak ada yang ditampilkan maka antarmuka Anda sedang down


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

Jadi di sini kita grep ip yang ada di mana-mana stdout alat untuk baris yang berisi antarmuka yang kami minati dan frasa "nyatakan UP" ( terima kasih kepada @Lekensteyn karena telah menunjukkan perlunya sedikit lebih spesifik daripada hanya UP ). Kami menggunakan argumen a sebagai kependekan dari address dan itu seharusnya cukup untuk mendapatkan daftar semua kartu jaringan yang dikonfigurasi dalam sistem.

Satu keuntungan menggunakan ip bisa jadi itu benar-benar harus tersedia di mana-mana - begitulah cara saya biasanya mengonfigurasi perangkat jaringan ponsel Android saya, misalnya.

:colons digunakan untuk menghindari kecocokan sebagian - dengan cara ini kami menjamin kecocokan untuk eth0 sebagai kebalikan dari someothereth0 yang mungkin atau eth007 .

Terima kasih @RaphaelAhrens karena mendorong saya menuju kebenaran dan menjelaskan solusi saya.

EDIT:

Untuk menangani persyaratan saat ini, Anda dapat:

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

Di atas hanya akan mencetak alamat ip CIDR jika target Anda $if adalah ATAS, terpasang, dan memiliki satu. Untuk ipv6 solusinya sesederhana hanya dengan sedikit modifikasi.

Jika Anda tidak menyukai sed Anda dapat memperoleh hasil yang serupa dengan |pipe ... grep lainnya dan menambahkan -A opsi konteks ke grep pertama - tapi saya suka sed .


Linux
  1. Linux – Mengapa Antarmuka Ethernet Disebut Enp0s10 Bukannya Eth0?

  2. Grep -v Perilaku Tak Terduga?

  3. Potong / Grep Dan Df -h?

  1. Grep Dan Ekor -f?

  2. Bagaimana cara saya grep secara rekursif?

  3. Perintah Linux untuk memeriksa apakah skrip shell sedang berjalan atau tidak

  1. cara menggunakan cURL pada antarmuka tertentu

  2. Konfigurasikan server DNS per antarmuka nic (eth0 / eth1)?

  3. Apa arti nama antarmuka eth0 di Linux?