Saya ingin mendapatkan daftar semua Nama Perangkat Jaringan yang tersedia di server Linux saya. Saya pikir itu
ifconfig
akan melakukan pekerjaan itu, namun jika konfigurasi menghasilkan cukup banyak output:
eth0 Link encap:Ethernet Hardware Adresse 08:00:27:fc:5c:98
inet Adresse:192.168.2.222 Bcast:192.168.2.255 Maske:255.255.255.0
inet6-Adresse: fe80::a00:27ff:fefc:5c98/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:329 errors:0 dropped:0 overruns:0 frame:0
TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:41496 (40.5 KiB) TX bytes:32503 (31.7 KiB)
eth1 Link encap:Ethernet Hardware Adresse 08:00:27:e9:35:7d
[...]
eth2 Link encap:Ethernet Hardware Adresse 08:00:27:ff:db:fe
[...]
lo Link encap:Lokale Schleife
[...]
Yang ingin saya capai adalah daftar seperti
eth0
eth1
eth2
lo
atau bahkan lebih baik
eth0
eth1
eth2
Saya berasumsi bahwa ini dapat dilakukan dengan kombinasi "kucing", "sed" dan "grep", tetapi saya sama sekali tidak tahu bagaimana cara menghapus informasi yang tidak diperlukan.
*nix
utilitas yang berbeda , tetapi sangat disayangkan solusi ini tidak berfungsi pada Mac :(ifconfig
ditolak, gunakanip
sebaliknyaifconfig -a | sed -E 's/[[:space:]:].*//;/^$/d'
Alternatif lain adalah:
Atau mungkin:
sumber
ls /sys/class/net
adalah solusi yang lebih baik dalam/etc/local.d
skrip diopenrc
-sed
solusi di atas berakhir dengan tambahan:
di akhir setiap antarmuka saat dijalankan dari/etc/init.d/local
(tetapi tidak ketika skrip dijalankan secara langsung).-o
- tidak tahu ituCukup gunakan / sys / class / net dan hapus jalurnya:
sumber
Coba ini:
cut -c 1-8
ekstrak 8 karakter pertama dari setiap barissort
macam-macam garisuniq -u
hanya mencetak garis unik yang akan menghapus garis kosong untuk garis deskripsi yang hanya memiliki spasi dalam delapan karakter pertama merekaIni berfungsi pada dua mesin linux yang saya coba, tetapi pada MacBookPro saya (OS X 10.6.4),
ifconfig
menggunakan tab bukan spasi, jadi ini sedikit lebih rumit:expand
mengubah tab menjadi spasiawk -F: '{print $1;}'
mencetak bidang pertama sebelum titik dua.sumber
| grep -v lo
:-)atau jika Anda hanya membutuhkan et *
sumber
Menggunakan
/sys
filesystem:Menggunakan ip dan Perl:
sumber
Inilah salah satu cara untuk mengekstrak nama antarmuka dari
ifconfig
output:Jika Anda ingin mengecualikan nama tertentu, salah satu caranya adalah filter lebih lanjut dengan
grep
:Jika Anda ingin mengecualikan lebih banyak nama, tambahkan lebih banyak
-e foo
kegrep
perintah.sumber
untuk hanya mencetak kolom pertama:
Anda dapat memasukkan aturan lain dalam awk untuk menambah atau menghapus entri sesuai kebutuhan.
EDIT: sama halnya dengan ifconfig (seperti yang ditunjukkan Doug)
Ini adalah contoh tidak termasuk antarmuka 'lo'
sumber
awk
akan mengabaikan spasi putih terdepan dan mencetak kata pertama di setiap baris berikutnya juga.menyediakan
sebagai output
sumber
Meskipun ada solusi yang diterima, saya ingin menyajikan solusi saya untuk ini.
Saya memiliki banyak antarmuka virtual, dan ingin mendapatkan daftar, dapat digunakan dalam berbagai skrip bash.
Saya tidak tertarik dengan loopback, karena saya tahu itu ada di sana :)
One-liner ini menyelesaikan pekerjaan:
Menghasilkan keluaran seperti:
Nikmati.
sumber
Semua solusi di atas berfungsi dengan baik. Anda masih bisa Coba ini
Karena,
lo
yang merupakan loopback, tidak diberi alamat HW, itu tidak akan muncul.Keluaran -
sumber
Solusi termudah adalah di man ifconfig (8)
man ifconfig (8) ekstrak http://www.manpagez.com/man/8/ifconfig/ :
Jadi, untuk memiliki daftar, gunakan:
ifconfig -l
Nama-nama akan dipisahkan oleh spasi sehingga Anda harus menggunakan sed untuk mengganti spasi ini dengan \ n:
ifconfig -l | sed 's/ / /g'
sumber
Ditingkatkan:
sumber
grep -v '^lo$'
; perintah Anda saat ini akan mengecualikan (contoh hipotetis)logical
danridiculous
antarmuka.Tidak ada solusi di atas yang berfungsi untuk saya, berikut adalah solusi saya:
lo
antarmukaOutput:
sumber
"ifcongif -l" harus melakukan pekerjaan. outputnya seperti ini "lo0 gif0 stf0 en0 ..." tanpa baris baru.
Saya menemukannya di beberapa situs web tetapi saya tidak dapat menemukannya lagi. dan saya masih mencari arti dari Bendera "-l" itu.
sumber
Kadang-kadang nettools tidak diinstal secara default. Jadi, saya suka menggunakan perintah bawaan yang memiliki lebih banyak jaminan untuk ditemukan di dalam / bin, / usr / bin, dan / usr / sbin tanpa harus khawatir tentang paket-paket pos yang diinstal.
ip addr: tampilkan / manipulasi perutean, perangkat, perutean kebijakan dan terowongan (alamat)
grep: cari spasi lalu apa saja setelah unitl:
cut: use (:) sebagai pembatas dan dapatkan bidang 2
tr: hapus spasi apa saja
sumber
Diuji pada macOS, berikut ini berfungsi. Saya perlu menemukan semua antarmuka yang UP. Ini berdasarkan jawaban dari Dennis Williamson di atas.
ifconfig -a | grep UP | sed 's/:.*//;/^$/d'
sumber
ifconfig | grep flags | awk -F: '{print $1;}'
sumber