当我检索设备的 MAC 地址时,我执行以下命令
$ arp <dnsname> | grep "HWaddress" -A1 | awk '{print $1 "" $3}' |head -2 | tail -1
这可能会打印
<dnsname> <mac address>
正如我从 arp 手册中看到的那样,它已被弃用,我的替代方案是使用 'ip' 命令而不是 arp 。
答案1
arp
能够将名称作为输入并在输出中打印名称。 ip
仅使用地址。
如果您可以处理地址,那么修改输出就非常容易。
$ ip neigh show to 10.0.0.1
10.0.0.1 dev wlan0 lladdr dc:fb:02:xx:xx:xx REACHABLE
$ ip neigh show to 10.0.0.1 | awk '{print $1 " " $5}'
10.0.0.1 dc:fb:02:xx:xx:xx
我刚刚注意到您的标题专门询问了 DNS 名称。如果这是要求,那么您需要翻译脚本中的名称。
$ ip neigh show to `getent hosts <dnsname> | awk '{print $1}'` | awk '{print $1 " " $5}'
$ 10.0.0.1 dc:fb:02:xx:xx:xx