-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Пинг группы ПК по списку IP
Добрый день!
Как имея список IP-адресов (на форме элемент "список" заполнен ими) иметь информацию (подсветкой другим цветом) какие включены а какие нет ПК? Прога моя используется для удаленного управления по типу Radmin. Прежде чем "ломиться" на другой комп, лучше бы видеть его активность ... Спасибо
|
Начнем с того, что какой способ проверки избрать: пинг или ещё есть какие методы. Ну и сам скриптик бы ...
Будет механизм проверки активности компа к списку на форме и выделению строчки в нём сам прикручу ...
|
мдя... я в аутоит еле-еле ... а тут
Мм, а что если я использую простой до безобразия способ: сделаю на каждый комп скрипт, чтобы при загрузке ставил 1 в какой-нибудь текстовый ини-файл в шаре на сервере. А при выключении писал туда 0. Ну а моему скрипту достаточно будет "пробежаться" по этому текстовому файлу чтобы сразу картина была ясна. Другими словами каждый комп обязан регистрироваться при включении и выключении в некотором журнале ... Ну а моя прога просто с периодичность какую задам считывает их состояние оттуда. В итоге я не буду тыкаться на тот компьютер который выключен, что и требовалось доказать ...
|
Serg2010, это крайне неудобное решение:
читать дальше »
связь может прерваться в любой момент, машина может выключаться некорректно и т.п. Наконец, подобная система давно существует: Vadims Podans' blog - Сетевое окружение (и особливо по ссылкам на KB внутри статьи). Именно из-за её ограничений и возникает потребность иметь точную картину, которую может дать только сиюминутный опрос машин.
Держите (я упростил приведённый пример для конкретного случая):
читать дальше »
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $aComputers = StringSplit("google.com,www.ya.ru,localhost,test", ",", 2)
Local $oSWbemServicesEx = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2")
Local $oSWbemSink = ObjCreate("WbemScripting.SWbemSink")
Local $oSinkObject = ObjEvent($oSWbemSink, "Sink_")
Local $lCount = UBound($aComputers)
For $sComputer In $aComputers
$oSWbemServicesEx.ExecQueryAsync($oSWbemSink, "SELECT * FROM Win32_PingStatus WHERE ADDRESS = '" & $sComputer & "'")
Next
Do
Sleep(100)
Until $lCount = 0
$oSWbemSink.Cancel
$oSinkObject = 0
$oSWbemSink = 0
$oSWbemServicesEx = 0
Exit(0)
;=============================================================================
;=============================================================================
Func Sink_OnObjectReady($oWbemObject, $oWbemAsyncContext)
If IsNumber($oWbemObject.StatusCode) Then
If $oWbemObject.StatusCode = 0 Then
ConsoleWrite($oWbemObject.Address & @Tab & "On" & @Tab & "Response time: " & $oWbemObject.ResponseTime & " ms" & @CRLF)
Else
ConsoleWrite($oWbemObject.Address & @Tab & "Off" & @Tab & "Status code: " & $oWbemObject.StatusCode & @CRLF)
EndIf
Else
ConsoleWrite($oWbemObject.Address & @Tab & "Not found" & @CRLF)
EndIf
EndFunc
;=============================================================================
;=============================================================================
Func Sink_OnCompleted($iHResult, $oWbemErrorObject, $oWbemAsyncContext)
$lCount = $lCount - 1
EndFunc
;=============================================================================
Возможный результат:
читать дальше »
Код:
>Running:(3.3.6.1):C:\Program Files\AutoIt3\autoit3.exe "E:\Песочница\0119\0002.au3"
localhost On Response time: 0 ms
www.ya.ru On Response time: 573 ms
google.com On Response time: 528 ms
test Not found
+>23:15:36 AutoIT3.exe ended.rc:0
>Exit code: 0 Time: 13.066
Теперь прикручивайте:
Цитата:
Цитата Serg2010
Будет механизм проверки активности компа к списку на форме и выделению строчки в нём сам прикручу ... »
|
|
Время: 00:41.
© OSzone.net 2001-