MACアドレスをファイルに出力


回答:


15

ifconfig 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はあなたが欲しいものなので、それを使っawkてフィルタリングすることができます:

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}'
00:11:22:33:44:55

それをファイルにリダイレクトします。

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}' > filename

2
th ipコマンドを使用することもできます/sbin/ip link show eth0
キース

2
@MichaelとにかくLinuxでは、これが推奨されるツールです。実際、いくつかの高度な機能を設定するにはを使用する必要があります。しかし、ifconfigは存続します...
Keith

3
LC_ALL=C ifconfig eth0 | awk '/HWaddr/ {print $NF}'出力はローカライズされる可能性があるため、国際的なアプローチはであり、「HWaddr」と一致しません。LC_ALL = Cは国際標準を使用します。
ユーザー不明

2
@ユーザーああ、クール。私が知る限り、それは常に最初の行になるので、あなたもただ逃げることができawk '{print $NF; exit}'ます
Michael Mrozek

1
はい、あなたがAWKタイプなら。私はsedタイプですが、ここではその方が好き| head -n 1です。
ユーザー不明

8

これが最新のLinuxメソッドです。

ip -o link show dev eth0 | grep -Po 'ether \K[^ ]*'

それはそれで、現代だifconfig長い廃止されての賛成でipからiproute2パッケージ、およびそれがgrep持っている-PためのPerlの正規表現のオプションゼロ幅の正のルックビハインドアサーションを

grep -oテキスト抽出に最適です。sed伝統的にそのために使用されますが、私はperlスタイルのゼロ幅アサーションがsed置換コマンドよりも明確であると思います。

実際には-o(oneline)オプションは必要ありませんが、ipネットワーク情報を抽出する場合は、1行に1つのレコードがある方がわかりやすいので、これを使用することを好みます。より複雑な一致または抽出を行う場合(通常はを使用awk-oは、クリーンなスクリプトに不可欠であるため、一貫性と共通のパターンのために、常にそれを使用します。


1
@michelemarcon:これはperlを使用しません。最近のGNU grepを使用しており、grepにはperlスタイルの正規表現を使用するオプションがあります。
camh

私はbusybox grepを持っていますが、説明をありがとうございます。+1
michelemarcon

5
#! /bin/sh

/sbin/ifconfig eth0 | perl -ne 'print "$1\n" if /HWaddr\s+(\S+)/' >file

ifconfigもちろん、の出力からMACアドレスを切り取ることができる他のツールがあります。私はPerlが好きです。


1
私のシステムにはperlがありません... :(ただし、+ 1
michelemarcon

0

を使用ip -br link show eth0すると、次のように表示されます。

$ ip -br link show eth0 
eth0             UP             85:e2:62:9c:b2:02 <BROADCAST,MULTICAST,UP,LOWER_UP>

3列目だけが必要なので、次のようにします。

$ ip -br link show eth0 | awk '{ print $3 }'
85:e2:62:9c:b2:02
$ ip -br link show eth0 | awk '{ print $3 }' > file
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.