コマンドラインからネットワークインターフェイス名とMACアドレスを取得します。

コマンドラインからネットワークインターフェイス名とMACアドレスを取得します。

コマンドを実行すると

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

あるいは、ip1行モードを使用すると、スクリプトが簡単になります。

$ 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 }'

どこ

  • -brbriefインターフェースに関する情報を提供します。
  • grep -v LOOPBACKLOOPBACKインターフェースにのみ表示される単語は無視してください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}'

関連情報