コマンドを実行すると
ip link | awk '{print $2}'
Ubuntu 18.04では、次の結果が表示されます。
lo:
00:00:00:00:00:00
wlp1s0:
2c:6e:85:bf:01:00
enp2s0:
14:18:77:a3:01:02
次のように書式設定したいと思います。 (なしlo
)
wlp1s0: 2c:6e:85:bf:01:00
enp2s0: 14:18:77:a3:01:02
どうすればいいですか?
答え1
MACアドレスは以下から取得できます/sys/class/net/<dev>/address
。
$ cat /sys/class/net/enp0s3/address
08:00:27:15:dc:fd
したがって、次のようになります。
find /sys/class/net -mindepth 1 -maxdepth 1 ! -name lo -printf "%P: " -execdir cat {}/address \;
私にしてください:
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33
あるいは、ip
1行モードを使用すると、スクリプトが簡単になります。
$ ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}'
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33
答え2
IPリンクの使用
ip -o link | grep ether | awk '{ print $2" : "$17 }'
-o
各インターフェイスのオンライン結果が提供されます。grep ether
イーサネットアドレスが割り当てられているインターフェイスのみをフィルタリングします。awk
行の2列と17列を印刷し、その間にコロンを入れます。
または
ip -br link | grep -v LOOPBACK | awk '{ print $1 " : " $3 }'
どこ
-br
brief
インターフェースに関する情報を提供します。grep -v LOOPBACK
LOOPBACK
インターフェースにのみ表示される単語は無視してくださいlo
。awk
最初と3番目の列を印刷します。
ifconfigを使う
ifconfig | grep HW | awk '{ print $1" : "$5 }'
grep HW
ハードウェアアドレスが割り当てられているインターフェイスのみがフィルタリングされます。
ハッカー攻撃
grep HW
またはgrep ether
実際には無視されましたlo
。
ループバックインターフェースハードウェアアドレスなしそれに割り当てられました。
答え3
議論の余地がないパラメータすべての改行、タブ、および複数のスペースを単一のスペースに置き換えます。増やすことで-n 22番目の単語ごとに行を切り取ります。だから:
ip link | awk '{print $2}' | xargs -n 2
答え4
[速い答え]:
インターフェイス名を知らずにMACアドレスを取得するには:
cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address
次のコマンドはインターフェイス名を返します。
ip route show default | awk '/default/ {print $5}'