Что нового

[Сеть, интернет] Поиск компьютеров по локальной сети

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Всем привет.
Возможно-ли средствами AutoIt выполнить поиск и записать в массив имена компьютеров, которые находятся в одной локальной сети?

Извиняюсь, если повторяю тему, но долгий и упорный поиск ничем не помог. :wall_brake:
 
Автор
Astel064

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Спасибо, но она не работает. Она вывела неверные IP, которых у меня нет и никогда не было...
Знаю, что можно проверять по Ip адресам, но это долго.


Добавлено:
Сообщение автоматически объединено:

В общем, сам создал тему - сам ответил. Ответ на свой вопрос нашел:
Код:
#include <file.au3>
#include <Array.au3>
$NetView = "comp_list.txt"
RunWait(@ComSpec & " /c " & 'net view >'&$NetView, "", @SW_HIDE)
Dim $aRecords
_FileReadToArray($NetView,$aRecords)
FileOpen($NetView, 2)
;TCPStartup()
For $i=1 To $aRecords[0]   
    If StringInStr($aRecords[$i], "\\") Then
        $aRecords[$i] = StringReplace($aRecords[$i], "\\", "")
        $aRecords[$i] = StringReplace($aRecords[$i], " ", "")
        ;$LocalIP = TCPNameToIP($aRecords[$i])
        FileWriteLine($NetView, $aRecords[$i] );& " >>> " & $LocalIP & @CRLF)
    EndIf
Next
FileClose($NetView)
ShellExecute($NetView, "", "", "", @SW_MAXIMIZE)


Функция возвращает IP адреса компьютеров, которые находятся в одной рабочей группе.

Стало интересно. Если пробивать компьютеры таким образом:
Код:
$File = "ip.txt"
For $i = 0 To 255
$TestIP = "192.168.0."&$i
Ping ($TestIP)
If @error = 0 Then FileWriteLine ( $File, $TestIP ) 
Next

то возникает вопрос:
Функция возвращает список IP адресов. Как с помощью IP адреса получить сетевое имя компьютера???
Типа обратной функции TCPNameToIP.

Надеюсь, что кто-нибудь поможет :-\
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
А MAC-адрес сетевой карты по ip
в AutoIt можно как-то посмотреть?
 

beliy

Продвинутый
Сообщения
372
Репутация
72
А MAC-адрес сетевой карты по ip
в AutoIt можно как-то посмотреть?

Код:
$MAC = _GetMACFromIP (@IPAddress1)
MsgBox (0, "MAC Value", $MAC)

Func _GetMACFromIP ($sIP)
    Local $MAC,$MACSize
    Local $i,$s,$r,$iIP
    
;Create the struct
;{
;    char    data[6];
;}MAC
    $MAC        = DllStructCreate("byte[6]")

;Create a pointer to an int
;    int *MACSize;
    $MACSize    = DllStructCreate("int")

;*MACSize = 6;
    DllStructSetData($MACSize,1,6)

;call inet_addr($sIP)
    $r = DllCall ("Ws2_32.dll", "int", "inet_addr", _
                    "str", $sIP)
    $iIP = $r[0]

;Make the DllCall
    $r = DllCall ("iphlpapi.dll", "int", "SendARP", _
                    "int", $iIP, _ 
                    "int", 0, _
                    "ptr", DllStructGetPtr($MAC), _
                    "ptr", DllStructGetPtr($MACSize))

;Format the MAC address into user readble format: 00:00:00:00:00:00
    $s    = ""
    For $i = 0 To 5
        If $i Then $s = $s & ":"
        $s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
    Next


;Return the user readble MAC address
    Return $s
EndFunc


Источник
 
Верх