微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索

簽到天數: 189

該用戶今日未簽到

升級   100%

跳轉到指定樓層
主題
發表於 2016-11-23 18:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 gary8349 於 2021-2-16 13:11 編輯

我使用下方代碼以及幾種類似的(基於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('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判斷已經完成...

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



本帖子中包含更多資源

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

x
樓主熱門主題

該用戶從未簽到

升級   0%

2F
發表於 2016-11-23 21:10 | 只看該作者
_RunDos ( 'nbtstat -A 192.168.0.1 >>123.txt' )
少一個t?

點評

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

使用道具

該用戶從未簽到

升級   0%

3F
發表於 2016-11-23 23:00 | 只看該作者
本帖最後由 maodou 於 2016-11-23 23:05 編輯

參考一下別人寫的:

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

resolve remote computername

使用道具

該用戶從未簽到

升級   53.5%

4F
發表於 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

使用道具

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

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-12-4 01:58

Discuz! X

© 2009-2023 Microduo

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