gary8349 發表於 2016-11-23 18:03

如何使用 nbtstat -A IP 獲得內網MAC和主機名

本帖最後由 gary8349 於 2021-2-16 13:11 編輯

我使用下方代碼以及幾種類似的(基於nbtstat -A)
都無法獲得資料...
請問先進要如何寫才能正確?
請高手指點指點,感恩


主要以IP取得以下資訊:主機名稱+MAC+IPFunc _GetMacAddress($_phisycaladdress)
    Local $chk_1 = StringReplace($_phisycaladdress, '.', '') / 1
    If @extended <> 3 Or $chk_1 < 1 Then Return ''
    Local $chk_2 = StringSplit($_phisycaladdress, '.', 1)
    For $idx_chk = 1 To $chk_2
      If ($chk_2[$idx_chk] / 1) < 0 or ($chk_2[$idx_chk] / 1) > 255 Then Return ''
    Next
    Local $_buf = ''
    Local $_pid = Run('nbtstat -A ' & $_phisycaladdress, '', @SW_HIDE, 2)
    Do
      $_buf &= StdoutRead($_pid)
    Until @error
    If StringReplace($_buf, 'MAC Address = ', '') <> $_buf Then
      $chk_3 = StringSplit($_buf, 'MAC Address = ', 1)
      Return StringReplace(StringReplace($chk_3, @CR, ''), @LF, '')
    EndIf
    Return ''
EndFunc   ;==>_GetMacAddress

MsgBox(0, '', _GetMacAddress('XXX.XXX.XX.XXX'))CMD的結果(nbstat -A 192.168.0.1)
         NetBIOS 遠端電腦名稱表格

       名稱               類型         狀態
    ---------------------------------------------
    TEST01_SERVER_2<00>唯一          已登錄
    WORKGROUP      <00>群組          已登錄
    TEST01_SERVER_2<20>唯一          已登錄

    MAC 位址 = 00-00-00-00-D4-00
單純使用 _RunDos ( 'nbtstat -A 192.168.0.1 >>123.txt' )
所產生的文字檔內容為空
會不會是因為指令還沒跑完AU3判斷已經完成...

至少要得到遠端電腦名稱表格才能處理後續...
但現在卡關在這><



maodou 發表於 2016-11-23 21:10

_RunDos ( 'nbtstat -A 192.168.0.1 >>123.txt' )
少一個t?

maodou 發表於 2016-11-23 23:00

本帖最後由 maodou 於 2016-11-23 23:05 編輯

參考一下別人寫的:

GetMac with StdOutRead and nbtstat <-- 參考第二段code

resolve remote computername

tt1668 發表於 2016-11-23 23:27

依據Calling a 32-bit System command from a script in x64 Windows

#include <process.au3>
if @OSArch="X64" Then
   _RunDos (@WindowsDir&"\sysnative\nbtstat -A 192.168.0.1 >> 123.txt" )
elseif @OSArch="X86" Then
   _RunDos (@WindowsDir&"\nbtstat -A 192.168.0.1 >> 123.txt" )
EndIf
頁: [1]
查看完整版本: 如何使用 nbtstat -A IP 獲得內網MAC和主機名