3

PythonでデフォルトゲートウェイのMACアドレスを取得する簡単な方法はありますか?

コードを実行しているLinuxマシンからARP要求を行うことができないため、 ARPテーブルから直接取得する必要があります。

4

3 に答える 3

2

Linuxを使用していますか?ファイルを解析でき/proc/net/arpます。ゲートウェイのハードウェアアドレスが含まれています。

于 2013-03-14T11:07:40.000 に答える
2

コンテンツを読み取って/proc/net/arp解析することができます。これにより、既知のIP-MACアドレスがいくつか提供されます。

ゲートウェイはおそらく常に認識されていますが、そうでない場合はpingを実行する必要があり、ARP要求が自動的に生成されます。

デフォルトのgwはで見つけることができます/proc/net/route

于 2013-03-14T11:09:08.167 に答える
2

次のDevFSファイルは、この情報を提供します。

/proc/net/arp
/proc/net/route

ホスト/マスクとして0/0を使用するルートエントリを検索します。

Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window  IRTT                                                       
eth0    00000000        B91A210A        0003    0       0       100     00000000        0       0       0                                                                             

ゲートウェイフィールドを変換します(リトルエンディアンの16進数です... grr):

import struct
from IPy import IP
address = IP(struct.unpack('<I', struct.pack('>I', int(i, 16)))[0])
#Converts 'B91A210A' to IP('10.33.26.185')

そこから、arpテーブルでデフォルトゲートウェイを見つけることができます。

IP address       HW type     Flags       HW address            Mask     Device
10.33.26.185     0x1         0x2         e6:92:ec:f5:af:f7     *        eth0

表示されない場合は、pingを1回発行してから、もう一度確認してから失敗します。

于 2013-03-14T11:20:27.317 に答える