ifconfig
akan menampilkan informasi tentang antarmuka Anda, termasuk alamat MAC:
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:289748093 errors:0 dropped:0 overruns:0 frame:0
TX packets:232688719 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3264330708 (3.0 GiB) TX bytes:4137701627 (3.8 GiB)
Interrupt:17
HWaddr
yang Anda inginkan, sehingga Anda dapat menggunakan awk
untuk memfilternya:
$ ifconfig eth0 | awk '/HWaddr/ {print $NF}'
00:11:22:33:44:55
Alihkan itu ke file:
$ ifconfig eth0 | awk '/HWaddr/ {print $NF}' > filename
Inilah metode Linux modern:
ip -o link show dev eth0 | grep -Po 'ether \K[^ ]*'
Modern dalam ifconfig
itu telah lama ditinggalkan demi ip
dari iproute2
paket, dan grep
itu memiliki -P
opsi untuk ekspresi reguler perl untuk pernyataan tampilan belakang positif dengan lebar nol.
grep -o
bagus untuk ekstraksi teks. sed
secara tradisional digunakan untuk itu tetapi menurut saya pernyataan lebar nol gaya perl lebih jelas daripada perintah substitusi sed.
Anda sebenarnya tidak membutuhkan -o
(oneline) ke ip
, tetapi saya lebih suka menggunakannya saat mengekstraksi informasi jaringan karena menurut saya lebih bersih dengan memiliki satu catatan per baris. Jika Anda melakukan pencocokan atau ekstraksi yang lebih rumit (biasanya dengan awk
), -o
sangat penting untuk skrip yang bersih, jadi demi konsistensi dan pola umum, saya selalu menggunakannya.
#! /bin/sh
/sbin/ifconfig eth0 | perl -ne 'print "$1\n" if /HWaddr\s+(\S+)/' >file
Ada alat lain yang dapat memotong alamat MAC dari ifconfig
output, tentu saja. Saya suka Perl.