Что нового

[Сеть, интернет] Получение IP адреса, имя пользователя, из массива

atmel007

Новичок
Сообщения
13
Репутация
0
Версия AutoIt: 3.3.8.1
Здравствуйте, подскажите пожалуйста.
Есть ПК к которому подключен принтер расшареный по сети, часто когда на него печатают другие ПК, не отключаются и сессии с \PIPE\spoolss и висят часами.
Вопрос: есть в WindowsXP стандартная утилита net.exe, как получить IP всех подключившихся в данный момент к компьютеру:
1. узнать IP и имя пользователя всех подключившихся, (сеть и статика и DHCP, постоянные только 192.168.)
2. проверить если допустим IP 1 использует ресурс \PIPE\spoolss и время простоя более 30 мин, то отключить этого пользователя, не отключая других.

что-то вот пытался сделать, но пока не получилось достать IP из массива возвращаемого из net.exe

Код:
#include <Constants.au3>
#include <Encoding.au3>
#include <Array.au3>

Global $sOut
Global $iPID
Global $avArray


_RunDOS('net session')
_OutResult()
;$sOut = StringTrimLeft($sOut, 166)
;$sOut = StringTrimRight($sOut, 101)
_search("\\192.168.")

_RunDOS('net files')
;MsgBox(262144+48, "Внимание!", $sOut  & @LF)  
_OutResult()
_search("\PIPE\spoolss")


MsgBox(262144+48, "Внимание!", $sOut  & @LF)  ;вместо этого будет переменная 
;Run(@ComSpec & " /c net files "& $num & " /close" ,"",@sw_hide)
Exit



Func _RunDOS($sCommand)
    $iPID = Run(@ComSpec & " /C " & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	Return SetError(@error, @extended, $iPID)
EndFunc   ;==>_RunDOS

Func _OutResult()
Local $sOutres
	While 1
		$sOutres &= StdoutRead($iPID, False, False)
		If @error Then ExitLoop
	Wend
$sOut=_Encoding_CyrillicTo1251($sOutres)&@CRLF
$avArray = StringSplit($sOut, " "&@LF)
EndFunc

Func _search($sSearch)
;$iIndex = _ArraySearch($avArray, $sSearch, 0, 0, 0, 1)
Local $iIndex  = _ArrayFindAll($avArray,$sSearch, 0, 0, 0, 1)
If @error Then
    MsgBox(4096, "Не найдено", '"' & $sSearch & '" не был найден в массиве.')
Else
    MsgBox(4096, "Найдено", '"' & $sSearch & '" найден в массиве в позиции ' & $iIndex & ".")
	_ArrayDisplay($avArray, "$avArray ")
	_ArrayDisplay($iIndex, "Результаты поиска в массиве $avArray")

EndIf
EndFunc


Или я пошел не в том направлении, и возможно как-то иначе решить данную проблему встроенными функциями Autoit ?
 
Верх