gpt4 book ai didi

linux - 如何使用 shell 脚本从 dhcp.lease 文件中提取 IP 地址、MAC 地址和名称?

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:32 24 4
gpt4 key购买 nike

我正在尝试从 openwrt 中的/tmp/dhcp.lease 解析 dhcp.lease 文件。

root@OpenWrt:/# cat /tmp/dhcp.leases

1568953482 70:B3:D5:14:D0:31 192.168.3.51 device1 01:70:B3:D5:14:D0:31
2867821468 38:B8:EB:10:00:22 192.168.5.93 device2 01:38:B8:EB:10:00:22
8984532872 00:01:0A:33:11:33 192.168.5.44 CISCOee 01:00:01:0A:33:11:33

Where, 2nd column - MAC address , 3rd column - IP address and 4th column- Name

我想运行 shell 脚本来解析此 dhcp.lease 列表中的设备数量MAC 地址IP 地址设备名称

示例输出:

如果dhcp.lease文件中存在3个设备列表,我想打印输出,例如:

3
70:B3:D5:14:D0:31/192.168.3.51/device1
38:B8:EB:10:00:22/192.168.5.93/device2
00:01:0A:33:11:33/192.168.5.44/CISCOee

和如果没有找到设备列表,它应该返回

0

我可以进行简单的文件内容迭代吗?或者像 sed/awk 这样的快速方法?有示例代码吗?

最佳答案

awk 命令可能会帮助您。

$ awk -v OFS='\n' '$2 ~ /[0-9A-Z]:/{n=n+1;a[n]=$2"/"$3"/"$4} END{print n==""?0:n; for(i in a)print a[i]}' /tmp/dhcp.leases

简要说明,

  • 打印 $2 与正则表达式匹配的行 [0-9A-Z]:
  • 将匹配的计数保存到n,并将$2/$3/$3保存到数组一个
  • 打印匹配的 case n 的数量以及最后数组 a 中的值

关于linux - 如何使用 shell 脚本从 dhcp.lease 文件中提取 IP 地址、MAC 地址和名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45430362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com