Saya perlu memeriksa dengan skrip, apakah eth0
sudah dikonfigurasi. Jika demikian, skrip tidak akan melakukan apa pun. Kalau tidak, itu akan mulai wlan0
. (Saya tidak ingin keduanya eth0
dan wlan0
bangun pada saat yang sama).
Apa cara termudah untuk memeriksa, apakah eth0
sudah siap?
Saya menggunakan Debian Wheezy
KLARIFIKASI:
Saya ingin memeriksa tidak hanya bahwa kabel masuk eth0
dicolokkan, tetapi lebih tepatnya antarmuka dikonfigurasi (yaitu ia memiliki set IP statis, atau telah menerima IP DHCP). Jika kabel dicolokkan, tetapi eth0
tidak dikonfigurasi dengan benar, saya ingin memulaiwlan0
linux
networking
pengguna1968963
sumber
sumber
cat /sys/class/net/ | grep eth0
harus memberi Anda data yang mudah diurai. Anda juga bisa melakukannyasudo ethtool eth0 | grep Link
Jawaban:
Anda bisa melakukannya dengan banyak cara. Berikut sebuah contoh:
sumber
/sys/class/net/eth0/carrier
mengecek, untuk memeriksa sinyal, tetapi masih belum memiliki sewa DHCP, dll.Jika tidak ada yang ditampilkan maka antarmuka Anda tidak aktif
sumber
Jadi di sini kita alat di
grep
mana-mana untuk baris yang berisi antarmuka kita yang menarik dan frase "status UP" (terima kasih kepada @Lekensteyn untuk menunjukkan perlunya sedikit lebih spesifik daripada hanya ). Kami menggunakan argumen sebagai formulir singkat untuk dan itu harus cukup untuk mendapatkan daftar semua kartu jaringan yang dikonfigurasi dalam sistem.ip
stdout
UP
a
address
Salah satu keuntungan menggunakan
ip
adalah bahwa itu harus benar-benar tersedia di mana saja - itu adalah bagaimana saya biasanya mengkonfigurasi perangkat jaringan ponsel Android saya, misalnya.Ini
:colons
digunakan untuk menghindari kecocokan sebagian - dengan cara ini kami menjamin kecocokan untuketh0
yang sebaliknya mungkinsomeothereth0
ataueth007
.Terima kasih @RaphaelAhrens karena mendorong saya ke arah kebenaran dan menjelaskan solusi saya.
EDIT:
Untuk menangani persyaratan saat ini Anda dapat:
Di atas hanya akan mencetak alamat ip CIDR jika target Anda
$if
adalah UP, terpasang, dan memiliki satu. Untuk ipv6 solusinya sangat sederhana dengan hanya modifikasi kecil.Jika Anda tidak suka,
sed
Anda bisa mencapai hasil yang sama dengan yang lain|pipe ... grep
dan menambahkan-A
opsi konteks ke yang pertamagrep
- tapi saya sukased
.sumber
UP
jika perangkat, tapi tidak ada kabel yang terhubung:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Anda juga dapat menentukan perangkat untuk menghindari positif palsu:ip addr show dev eth0
.Metode lain tidak berfungsi, tetapi yang ini tidak (setidaknya di Ubuntu):
sumber
ip route
di Debian Stretch.