Bagaimana cara menangkap alamat IP pertama yang berasal dari ifconfig
perintah?
ifconfig -a
enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255
inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link>
ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet)
RX packets 26846250 bytes 12068811576 (11.2 GiB)
RX errors 0 dropped 58671 overruns 0 frame 0
TX packets 3368855 bytes 1139160934 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Hasil yang diharapkan:
IP=100.14.22.12
Jawaban:
Lebih baik hindari menggunakan
ifconfig
untuk mendapatkan alamat IP dalam skrip karena sudah ditinggalkan di beberapa distribusi (misalnya CentOS dan yang lainnya, jangan menginstalnya secara default lagi).Dalam sistem lain, output ifconfig bervariasi sesuai dengan rilis distribusi (misalnya output / spasi / bidang
ifconfig
berbeda dari Debian 8 ke Debian 9, misalnya).Untuk mendapatkan alamat IP
ip
, dengan cara yang sama Anda bertanya:Atau lebih baik lagi:
Atau, saat Anda bertanya "IP ="
Mengadaptasi ide dari @Roman tanpa malu-malu
Output normal:
Dari
man ip
:Lihat satu contoh mengapa
ifconfig
tidak disarankan: BBB: `bbb-conf --check` menampilkan alamat IP sebagai` inet` - ifconfig kesengsaraanUntuk memahami mengapa
ifconfig
ada di jalan keluar, lihat Perbedaan antara perintah 'ifconfig' dan 'ip'sumber
awk
. Terlalu banyak kekuatan otak untukku, masih terbangun. Menghindariifconfig
, itu belum masa depan, dan posisi perubahan alamat IP, setidaknya ada dua versi / implementasi (?) Yang berbeda untuk Linux di luar sana yang saya kenal.-brief
parameter dan hasilnya menjadi lebih mudah diurai (2015-08-31: git.kernel.org/pub/scm/network/iproute2 /iproute2.git/commit/… )-o
yang memang berguna untuk skripAwk
larutan:Output sampel:
sumber
sumber
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '