我需要編寫一個小腳本我可以使用獲得只有一個特定IP地址的MAC地址。所以,你可以使用像VBScript:獲取指定IP地址的MAC地址(ONLY)
arp -a 192.168.x.x | FIND "192.168.x.x"
但你的結果仍然會是這個樣子:
Interface: 192.168.x.x --- 0x10
192.168.x.x 00-00-00-00-00-00 dynamic
不知何故,使用正則表達式或其它先進的分析方法,我想以削減下來呼應「00-00-00-00-00-00」。我可以用下面的,但我喜歡的東西清潔:
set obj_exec = obj_shell.Exec("%comspec% /C arp -a 192.168.x.x | FIND "192.168.x.x" > c:\temp\tmp_gatewayMAC.txt")
set obj_FSO = createobject("Scripting.FileSystemObject")
set obj_file = obj_FSO.opentextfile("c:\temp\tmp_gatewayMAC.txt", 1)
do until obj_file.AtEndOfStream
str_line = obj_file.readline
if instr(str_line, "dynamic") > 0 then
str_MACaddress = str_line
end if
loop
str_MACaddress = replace(str_MACaddress, "dynamic","")
str_MACaddress = replace(str_MACaddress, "192.168.x.x","")
str_MACaddress = replace(str_MACaddress, " ","")
str_MACaddress = trim(str_MACaddress)
vbscript.echo(str_MACaddress)
暫時忽略我們如何確定網關的IP地址,我會想出一個方法,從本該分離。理想情況下,我可以運行一些其他實用程序(但無法找到),但它只是返回MAC。
太棒了!謝謝。不幸的是,我完全不知道命令本身是如何工作的(這部分:'for/f「」skip = 3 tokens = 2「」%a in') – Beems 2014-11-25 16:11:56
@Beems,意思是:執行'arp'命令,從其輸出,跳過三行,對於其餘行,使用空格作爲分隔符(默認情況下)獲取行中的第二個標記並回顯此標記 – 2014-11-25 18:12:53