ルーターのMACアドレスを取得できるLinuxコマンドはありますか?
ルーターのMACアドレスを取得できるLinuxコマンドはありますか?
回答:
私はワンライナーが好きです:
arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')
arping
出力からデフォルトゲートウェイIPアドレスに関連付けられた番組MAC ip route show match 0/0
によって解析され、awk
。
iwconfig | grep "Access Point"
コマンドで提供します。2つずれていたのは、有線接続のキャッシュバージョンだったと思います。これを抜いて、ワイヤレスルートを取得していることを確認しました。
廃止されたコマンド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
して、IPアドレスとMACアドレスの行を検索しますlladdr
。
192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE
ルーターの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
。
arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
ここで働くワンライナーであるdash
、bash
とはzsh
:
ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
ip -4 route list 0/0
次のようなものを返します:
デフォルト:192.168.0.1 dev eth1 proto静的メトリック100
その行から3番目のフィールドとしてIPを取得しcut
、ネットワーク近隣の出力からそのIPとその直後のスペースを含むgrep行を取得します。(スペースはのマッチングを回避するために必要とされる192.168.0.1
とし192.168.0.10
)、一致した行は次のようになります:
192.168.0.1 dev eth1 lladdr ca:fe:ba:be:be:af到達可能
CA:FE:BA:BE:BE:AF
echo ${info[5]^^}
完全なソリューションではありませんが、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
ping 192.168.0.1
)、そのMACアドレスをarpキャッシュに