Что нового

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

ildar

Осваивающий
Сообщения
252
Репутация
29
Пытаюсь сделать скрипт по сканированию сети, для получения данных от локальных компьютеров. Застрял в самом начале.
Код:
#include <Constants.au3>
#include <file.au3>

$ip = "192.168.1.10"
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip ' >c:\1.txt', "", @SW_HIDE)

текстовый файл пустой. Если сделать так
Код:
[autoit]#include <Constants.au3>
#include <file.au3>

$ip = "192.168.1.10"
RunWait(@ComSpec & " /c " & 'ping ' & $ip ' >c:\1.txt', "", @SW_HIDE)

текстовый файл заполняется.
пробовал и
тоже работает
почему nbtstat -a не выполнятся, второй день голову ломаю. Может кто сталкивался?

До этого я пробовал через
Код:
#include <Constants.au3>

$str = 0
$ip = "192.168.1.10"

$VBS = Run(@ComSpec & " /c nbtstat -a " & $ip, @SystemDir, @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD)
StdinWrite($VBS)

While 1

$line = StdoutRead($VBS)
If @error Then ExitLoop
If $line <> "" Then
$str = $line

EndIf

Wend
While 1
$line = StderrRead($VBS)
If @error Then ExitLoop
$str = $line

Wend

MsgBox(0,"",$str)

Так как ничего не получил, решил попробовать через текстовый файл.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
ildar
Ошибку смотри:
Код:
#include <Encoding.au3>
$ip = "192.168.1.10"
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip & ' >c:\1.txt', "", @SW_HIDE) ; тут у тебя ошибка вкралась
$Var = FileRead("c:\1.txt")
$Str = _Encoding_866To1251($Var)
MsgBox(0, "Результат", $Str)
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
Хотелось бы знать в чем ошибка. Если вместо
Код:
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip & ' >c:\1.txt', "", @SW_HIDE)

прописать
Код:
RunWait(@ComSpec & " /c " & 'ping ' & $ip & ' >c:\1.txt', "", @SW_HIDE)

все работает. В командной строке nbtstat -a тоже работает. В чем засада?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У тебя было
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip ' >c:\1.txt', "", @SW_HIDE)

Я подправил
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip & ' >c:\1.txt', "", @SW_HIDE)
 

mef-t

Осваивающий
Сообщения
306
Репутация
30
Это "очепятка", при запуске с уже правленным вариантом у меня тоже создается пустой файл.
А с исходным кодом просто ругался.
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
После вставки редактировал и получилась "очепятка"
Есть какие мысли? Может другим способом можно это реализовать?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Код, что показал выше у меня нормально отработал.
И этот тоже:
Код:
#include <Encoding.au3>
$ip = @ComputerName
RunWait(@ComSpec & " /c " & 'nbtstat -a ' & $ip & ' >c:\1.txt', "", @SW_HIDE)
$Var = FileRead("c:\1.txt")
$Str = _Encoding_866To1251($Var)
MsgBox(0, "Результат", $Str)
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
Скопипастил, также пусто. Может это связано как то с операционной системой. У меня Windows 7 х64. А у Вас?
Да действительно - это так. Нашел компьютер с Windows XP там работает. И что на Windows 7 х64 может "блокировать" nbtstat?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У меня WinXP.
На Win7 нет возможности проверить.
Попробуй в начале кода поставить это
Код:
#RequireAdmin
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
Yuriy [?]
Код:
#RequireAdmin

Не помогло.
InnI
Если у вас включён UAC, то в корне диска С: работать с файлами можно только с правами администратора.
Если вместо nbtstat -a использовать ping, net view все работает - проблема не в работе с файлами. На "всякий" проверил - выключен.
madmasles
У меня Ваш код работает на 7.
Что с моей 7, не так?
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
InnI
Вы правы. Работает. Ни как не думал что х64 может повлиять на работу nbtstat (другие команды отрабатывают)

Yuriy, InnI, madmasles,
Всем огромное спасибо!
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
InnI сказал(а):
ildar [?]
Что с моей 7, не так?
А как вы запускаете скрипт? Через AutoIt3.exe ? Может попробовать запустить с помощью AutoIt3_x64.exe ?
Подниму старую тему. Опять потребовалось команда nbtstat, да она отрабатывает с помощью AutoIt3_x64.exe, но каждый раз проверять работу скрипта с помощью AutoIt3_x64.exe не удобно. Как этим пользоваться в редакторе Scite?
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
InnI сказал(а):
ildar
Как этим пользоваться в редакторе Scite?
Нужна полная версия SciTE
Код:
#AutoIt3Wrapper_UseX64=Y
В комплекте не полная? вот код, там эта строка есть
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <Constants.au3>
#include <Encoding.au3>


$iIP = 14
$aList = _List($iIP)

_ArrayDisplay($aList)



Func _List($sCommand)

   $sRead=""
   $iPID = Run(@ComSpec & ' /C nbtstat -a 192.168.146.' & $sCommand , '', @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)

    If Not $iPID Then
        MsgBox(16, 'Error', 'Error')
        Exit
    EndIf

    While 1
        $sRead &= StdoutRead($iPID)
        ;$sRead &= _Encoding_866To1251($sRead)
        If @error Then ExitLoop

        Sleep(10)

        ConsoleWrite(_Encoding_866To1251($sRead))
        $aRead = StringSplit(_Encoding_866To1251($sRead),@CRLF,3)

    WEnd

   ;ConsoleWrite(_Encoding_866To1251($sRead))
   _ArrayDisplay($aRead)

	;$aSize = (UBound($aRead)-3)


	;Return $aERead

   ;_ArrayDisplay($aRead)

EndFunc
Так есть не полная. Скачал отсюда https://www.autoitscript.com/site/autoit-script-editor/downloads/ все работает. Спасибо большое!
 
Верх