擅长:python、mysql、java
<p>正如vartec所建议的,<code>netifaces</code>应该可以很好地从IP转到iface:</p>
<pre><code> import netifaces as nif
def mac_for_ip(ip):
'Returns a list of MACs for interfaces that have given IP, returns None if not found'
for i in nif.interfaces():
addrs = nif.ifaddresses(i)
try:
if_mac = addrs[nif.AF_LINK][0]['addr']
if_ip = addrs[nif.AF_INET][0]['addr']
except IndexError, KeyError: #ignore ifaces that dont have MAC or IP
if_mac = if_ip = None
if if_ip == ip:
return if_mac
return None
</code></pre>
<p>测试:</p>
<pre><code> >>> mac_for_ip('169.254.90.191')
'2c:41:38:0a:94:8b'
</code></pre>