請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Login

Google帳號登入

搜索
回覆 3則 瀏覽 21910篇

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

簽到天數: 181

該用戶今日未簽到

發表於 2016-11-23 18:03 | 顯示全部樓層 |閱讀模式
本帖最後由 gary8349 於 2016-11-23 21:53 編輯

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


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

  19. MsgBox(0, '', _GetMacAddress('140.126.22.216'))
複製代碼
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判斷已經完成...

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



本帖子中包含更多資源

您需要 登入 才可以下載或查看,沒有帳號?註冊

x
Related Posts Plugin for WordPress, Blogger...

該用戶從未簽到

發表於 2016-11-23 21:10 | 顯示全部樓層
_RunDos ( 'nbtstat -A 192.168.0.1 >>123.txt' )
少一個t?

點評

原諒小弟手殘筆誤,不是這原因>< 已附上截圖~  發表於 2016-11-23 21:50

使用道具

該用戶從未簽到

發表於 2016-11-23 23:00 | 顯示全部樓層
本帖最後由 maodou 於 2016-11-23 23:05 編輯

參考一下別人寫的:

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

resolve remote computername

使用道具

該用戶從未簽到

發表於 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
  • 感謝~ 原來是這個原因 現在已經解決了^^.

    gary8349 貢獻度 +7

1 0

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

Discuz! X

© 2009-2017 Microduo

快速回覆 返回頂部 返回列表