Войти

Показать полную графическую версию : Пинг группы ПК по списку IP


Serg2010
19-04-2013, 07:17
Добрый день!

Как имея список IP-адресов (на форме элемент "список" заполнен ими) иметь информацию (подсветкой другим цветом) какие включены а какие нет ПК? Прога моя используется для удаленного управления по типу Radmin. Прежде чем "ломиться" на другой комп, лучше бы видеть его активность ... Спасибо

Iska
19-04-2013, 09:29
Что именно непонятно?

Serg2010
19-04-2013, 19:36
Начнем с того, что какой способ проверки избрать: пинг или ещё есть какие методы. Ну и сам скриптик бы ...

Будет механизм проверки активности компа к списку на форме и выделению строчки в нём сам прикручу ...

Iska
20-04-2013, 06:37
Serg2010, пинг. Для скорости опроса рекомендую пользовать асинхронный Wbem — запросы выполняются асинхронно, обрабатываются квазисинхронно; примеры на WSH: VBScript: асинхронная обработка множественных запросов WMI (Страница 1) — Windows Script Host, HTA (VBScript, JScript) — Серый форум (http://forum.script-coding.com/viewtopic.php?id=3783).

Serg2010
21-04-2013, 19:30
мдя... я в аутоит еле-еле ... а тут

Мм, а что если я использую простой до безобразия способ: сделаю на каждый комп скрипт, чтобы при загрузке ставил 1 в какой-нибудь текстовый ини-файл в шаре на сервере. А при выключении писал туда 0. Ну а моему скрипту достаточно будет "пробежаться" по этому текстовому файлу чтобы сразу картина была ясна. Другими словами каждый комп обязан регистрироваться при включении и выключении в некотором журнале ... Ну а моя прога просто с периодичность какую задам считывает их состояние оттуда. В итоге я не буду тыкаться на тот компьютер который выключен, что и требовалось доказать ...

Iska
21-04-2013, 23:18
Serg2010, это крайне неудобное решение: связь может прерваться в любой момент, машина может выключаться некорректно и т.п. Наконец, подобная система давно существует: Vadims Podans' blog - Сетевое окружение (http://www.sysadmins.lv/PermaLink,guid,bae7e8f5-fb42-4031-8585-db526636379d.aspx) (и особливо по ссылкам на 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

Теперь прикручивайте:
Будет механизм проверки активности компа к списку на форме и выделению строчки в нём сам прикручу ... »

AZJIO
22-04-2013, 01:17
Serg2010, http://u.to/Atly




© OSzone.net 2001-2012