web-dev-qa-db-ja.com

ifconfigの出力からMACアドレスを抽出する最良の方法は?

ifconfigの出力からMACアドレスを抽出する最良の方法は何ですか?

サンプル出力:

bash-3.00# ifconfig eth0        
eth0      Link encap:Ethernet  HWaddr 1F:2E:19:10:3B:52    
          inet addr:127.0.0.66  Bcast:127.255.255.255  Mask:255.0.0.0    
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ....
          ....

Cut、 [〜#〜] awk [〜#〜] などを使用する必要がありますか?.

61
Aman Jain

あなたは/sys/class/の下で猫をすることができます

cat /sys/class/net/*/address

eth0専用

cat /sys/class/net/eth0/address
106
Michalis

私は使うだろう:

ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

-oを指定すると、grepは式に一致する行の一部のみを出力します。 [[:xdigit:]]{1,2}は、1桁または2桁の16進数に一致します(Solarisは先行ゼロを出力しません)。

68
Robert Gamble

私はこれらの種類のタスクに/ sbin/ipを使用するのが好きです。なぜなら、解析がずっと簡単だからです

$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff

Awkを使用すると、この出力から簡単にMACアドレスを取得できます。

$ ip link show eth0 | awk '/ether/ {print $2}'
00:0c:29:30:21:48

少し手間をかけ、より多くのデータを解析する場合は、ipコマンドに-online引数を使用することをお勧めします。これにより、すべての行を新しいデバイスとして扱うことができます。

$ ip -o link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue \    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\    link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\    link/ether 00:0c:29:30:21:52 brd ff:ff:ff:ff:ff:ff
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 100\    link/[65534] 
5: sit0: <NOARP> mtu 1480 qdisc noop \    link/sit 0.0.0.0 brd 0.0.0.0
22
Jerub

本当に利点があるかどうかはわかりませんが、単純にawkを使用できます。

ifconfig eth0 | awk '/HWaddr/ {print $5}'
11
albertb

OPの例はBashを参照しているため、追加のツールを使用せずにHWaddrなどのフィールドを抽出する方法を次に示します。

x=$(ifconfig eth0) && x=${x#*HWaddr } && echo ${x%% *}

最初のステップで、これはifconfigの出力をxに割り当てます。 2番目のステップは、「HWaddr」の前のすべてを削除します。最後のステップでは、「」(MACの後ろのスペース)以降のすべてが削除されます。

参照: http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

4
xebeche

Ubuntu/Debianの場合

ifconfig | grep HW | awk '{print $5}'

RhatまたはCentOsの場合

ip add | grep link/ether | awk '{print $2}'
3
nPcomp

私はここで説明されている方法を好む(わずかな修正を加えて): http://www.askdavetaylor.com/how_do_i_figure_out_my_ip_address_on_a_mac.html

ifconfig | grep "inet " | grep -v 127.0.0.1 | cut -d " " -f2

その後、将来の使用のために短い「myip」コマンドにエイリアスできます。

echo "alias myip=\"ifconfig | grep 'inet ' | grep -v 127.0.0.1 | cut -d ' ' -f2\"" >> ~/.bash_profile
2
manafire

ターミナルのUbuntu 14.04で

ifconfig | grep HW
1
Fernando_Jr

これはどう:

ifconfig eth0 | grep -Eo ..\(\:..\){5}

より具体的に

ifconfig eth0 | grep -Eo [:0-9A-F:]{2}\(\:[:0-9A-F:]{2}\){5}

また、シンプルなもの

ifconfig eth0 | head -n1 | tr -s ' ' | cut -d' ' -f5`
1
phoxis

アクティブなアダプターのMACアドレスを取得する必要があったため、このコマンドを使用しました。

ifconfig -a | awk '/^[a-z]/ { iface=$1; mac=$NF; next } /inet addr:/ { print mac }' | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

それが役に立てば幸い。

0
Dogukan

ifconfig en0 | grep ether-有線MACアドレス用

ifconfig en1 | grep ether-ワイヤレスMACアドレス用

0
Sateesh Pasala

素晴らしくて速いもの:

ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11
0
Hugh

これはMac OS Xで私のために働く:

ifconfig en0 | grep -Eo ..\(\:..\){5}

以下も同様です。

ifconfig en0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

両方とも上記の例のバリエーションです。

0
CRGreen
ifconfig | grep -i hwaddr | cut -d ' ' -f11
0

注:OS Xではeth0が機能しない場合があります。 p2p0を使用します。

ifconfig p2p0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
0
Kyle Clegg

これは私のために働いた

ifconfig eth0 | grep -o -E ..:..:..:..:..:..

の代わりに eth0必要なインターフェイスは、MACアドレスです。

0
Adel Skn