我想寫一個腳本來解析Openwrt中的DHCP租約文件的一些設備與相應的地址。我維護一個供應商MAC地址列表。當我將設備連接到路由器時,我想從DHCP租賃文件中使用供應商MAC獲取該設備的IP地址,MAC地址和名稱。如何在Openwrt中解析來自DHCP租約文件的特定MAC地址?
例如,如果我已經保持賣方MAC的列表解決諸如
MAC LIST = {"00:01:0A","00:00:1A","00:00:39"}
where ,
00:01:0A - CISCO
00:00:1A - AMD
00:00:39 - Toshiba TOSHIBA CORPORATION
和OpenWrt的DHCP租用文件包含不同的設備例如:
[email protected]:/# 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
我在這裏得到一個CISCO設備的MAC地址從00:01:0A
開始。我想在openwrt/Unix中編寫一個bash腳本,以便從/tmp/dhcp.leases
文件中獲取與MAC LIST
相關的所有設備的相應IP地址,名稱和MAC地址。如果找不到重置爲MAC LIST
的設備,則該腳本應返回NULL
。我怎樣才能解析這個地址列表使用腳本?有什麼建議麼 ?
更新:
我想將第一3位商MAC地址的DHCP與比較租賃文件。例如我的列表中包含的文件MAC.txt下列供應商的MAC地址(3位):
/usr/MAC.txt
---------
00:01:0A
00:00:1A
00:00:39
和dhcp.leases包含:
根@的OpenWrt:/#貓的/ 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
8984532873 00:01:0A:33:11:33 192.168.5.44 CISCOee1 01:00:01:0A:33:11:33
8984532874 00:01:0A:34:12:34 192.168.5.44 CISCOee2 01:00:01:0A:34:12:34
現在我想比較dhcp租賃文件的MAC地址從MAC.txt文件與dhcp.leases文件。如果前3位數字匹配,那麼我想返回匹配設備的IP地址,MAC地址和名稱。
Sample output :
00:01:0A:33:11:33 192.168.5.44 CISCOee1
00:01:0A:34:12:34 192.168.5.44 CISCOee2
如果發現什麼都沒有發送NULL作爲輸出。
我更新了我的問題。請確保你完成了這個。感謝您的寶貴建議。 –
腳本中最後一行'MAC dhcp.leases'是什麼?它是文件路徑嗎?所以我可以更改爲'MAC/tmp/dhcp.leases' –
MAC是您維護的文件(包含文本MAC LIST)dhcp.leases是dhcp租約文件。 Awk正在處理這兩個文件。 –