当我使用此命令时:
arp -a | grep "192.168.0.19" | awk '{ print $4 }'
我收到这些结果... ff:ff mac地址是我想要的,但是为什么我会得到一个(不完整)s字段?我想要的只是我从中提取特定IP的MAC地址。
ff:ff:ff:ff:ff:ff
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
(incomplete)
显然,您最近尝试访问192.168.0.190
,,192.168.0.191
… 192.168.0.199
(注意有10 (incomplete)
s)。无法到达这些地址,内核缓存仍然将其不完整的条目保留一段时间。
我想如果您做到了,arp -a | grep "192.168.0.19"
您会自己发现的。
我的arp -a
(在Ubuntu 14.04.5 LTS上)将IP地址放在括号中。尝试:
arp -a | grep "(192.168.0.19)" | awk '{ print $4 }'
或者,您可以(incomplete)
使用以下-v
选项过滤掉s grep
:
arp -a | grep "192.168.0.19" | grep -v "(incomplete)" | awk '{ print $4 }'
糟糕!后者可能返回您不期望的主机的MAC地址。想想如果192.168.0.19
输入不完整(例如输入完整)会发生什么192.168.0.190
。我出于教育目的将其留在这里。
然而,grep -v
可能是有用的(通知旁边的IP地址括号回来了):
arp -a | grep "(192.168.0.19)" | grep -v "(incomplete)" | awk '{ print $4 }'
这样,您将获得所需的MAC地址,如果没有该IP的完整条目,则什么也不会获得。
最后,我arp
只能返回有关特定IP的信息: arp -a 192.168.0.19
。这是最好的开始方式。整个命令可能如下所示:
arp -a 192.168.0.19 | grep -v "(incomplete)" | awk '{ print $4 }'
再次糟糕!到处都是陷阱。如果的主机名是,192.168.0.19
则最后一个命令将不返回任何输出foobar-(incomplete)
。改进版:
arp -a 192.168.0.19 | awk '{ print $4 }' | grep -v "(incomplete)"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句