web-dev-qa-db-ja.com

ルーターのMACアドレスを取得するにはどうすればよいですか?

ルーターのMACアドレスを取得できるLinuxコマンドはありますか?

10
user4650183

私はワンライナーが好きです:

arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')

arpingは、awkで解析されたip route show match 0/0の出力からのデフォルトゲートウェイIPアドレスに関連付けられたMACを示します。

4
Eric Carvalho

廃止されたコマンドifconfig(8)、arp(8)、またはroute(8)は使用しないでください。それらを置き換える新しいコマンドを使用して、さらに多くのことを行うことができます、ip(8)。

ip route listを使用して、マシンにあるdefaultルーターを確認します。これは、default(または0.0.0.0)で始まる行で、その後のルーターへのIPアドレスが必要です。 IPv6を使用する場合は、-6スイッチ、ip -6 route listを追加するだけです。

default via 192.168.11.1 dev eth0  proto static 

defaultルーターのIPアドレスのMACアドレスを確認するには、ip neighを使用し、lladdrの後にIPアドレスとMACアドレスを持つ行を検索します。

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
8
Anders

ルーターのIPがわからない場合は、おそらくゲートウェイである可能性があります routeコマンドから

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

フラグUGのある行に注意してください。その行のGateway列のアドレスは、探しているものです。次に 2707974の提案arp -nを付けて(最初に表示されない場合はIPにpingを実行)、一致する行を見つけます。

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   00:11:22:33:44:55   C                     eth0
192.168.0.2              ether   66:77:88:99:aa:bb   C                     eth0

ここでは、ルーターのMACは00:11:22:33:44:55になります。

4
glibdud

dashbash、およびzshで機能するワンライナーは次のとおりです。

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0は次のようなものを返します。

    192.168.0.1を介したデフォルトdev eth1 proto static metric 100

  2. cutの3番目のフィールドとしてその行からIPを取得し、そのIPとネットワーク近傍の出力からその直後のスペースを含むgrep行を取得します。 (192.168.0.1192.168.0.10の一致を回避するにはスペースが必要です)、一致した行は次のようになります。

    192.168.0.1 dev eth1 lladdr ca:fe:ba:be:be:af REACHABLE

  3. 次に、5番目のフィールドを取得して大文字にします:

    CA:FE:BA:BE:BE:AF

3
Grief

完全な解決策ではありませんが、arp -nを確認します。

ddd@mmm ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.xxx          ether   00:e0:1e:b4:12:42   C                     eth0
yyy.yyy.yyy.yyy          ether   00:14:78:52:28:d2   C                     wlan0
2
2707974

これは、Griefの回答の改良版です。 ip -4ルートリスト0/0が複数の行(IP)を返す可能性があります。この場合、完全な1つのライナーは機能しません。したがって、次の変更されたバージョンは、ip -4ルートリスト0/0が返す最初の行のみを使用します。

ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
1
Schtibb