Beberapa jawaban tampaknya menggunakan lebih baru ip
perintah (pengganti ifconfig
) jadi di sini adalah salah satu yang menggunakan ip addr
, grep
dan awk
untuk hanya mencetak alamat IPv4 yang terkait dengan wlan0
antarmuka:
ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'
Meskipun bukan solusi yang paling ringkas atau mewah, ini (bisa dibilang) mudah dipahami (lihat penjelasan di bawah) dan dimodifikasi untuk tujuan lain, seperti mendapatkan 3 oktet terakhir dari alamat MAC seperti ini:
ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'
Penjelasan: ip addr show wlan0
mengeluarkan informasi yang terkait dengan antarmuka jaringan bernama wlan0
, yang seharusnya serupa dengan ini:
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::d340:5e4b:78e0:90f/64 scope link
valid_lft forever preferred_lft forever
Berikutnya grep inet
filter keluar garis yang tidak mengandung "inet" (IPv4 dan IPv6 konfigurasi) dan grep -v inet6
filter keluar garis tersisa yang melakukan mengandung "inet6", yang harus menghasilkan satu baris seperti ini:
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
Terakhir, awk
ekstrak pertama bidang "172.18.18.1/24" dan yang kedua menghapus singkatan network mask, yang hanya menyisakan alamat IPv4.
Juga, saya pikir perlu disebutkan bahwa jika Anda membuat skrip maka seringkali ada banyak alat yang lebih kaya dan / atau lebih kuat untuk mendapatkan informasi ini, yang mungkin ingin Anda gunakan sebagai gantinya. Misal kalo pake Node.js ada ipaddr-linux
, kalo pake Ruby ada linux-ip-parser
, dll.
Lihat juga /unix/119269/how-to-get-ip-address-using-shell-script