|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ping с выключением компа |
|
VBS/WSH/JS - [решено] Ping с выключением компа
|
Новый участник Сообщения: 26 |
Всех приветствую.
Задачу новую поставили мне, есть у нас скрипт который пингует нужную машину заданное количество времени option explicit ' conHost -- адрес хоста для слежения ' conCheckInterval -- временной интервал const conHost = " ip адрес", conCheckInterval = 1000 ' создаём объект: dim soWshShell : set soWshShell = CreateObject("WScript.Shell") WScript.Quit Main() function WriteLog(strText) WScript.Stdout.WriteLine Now() & " " & strText end function function GetHostStatus(strHost) dim oPing : set oPing = soWshShell.Exec("ping -n 1 " & strHost) dim strOut : strOut = "" do WScript.Sleep 100 if not oPing.Stdout.AtEndOfStream then strOut = strOut & oPing.Stdout.ReadAll end if loop until oPing.Status = 1 dim oRegExp : set oRegExp = new RegExp oRegExp.IgnoreCase = true oRegExp.Pattern = "[^ ]+:.+TTL=[^\r\n]+" dim oMatches : set oMatches = oRegExp.Execute(strOut) if oMatches.Count > 0 then GetHostStatus = oMatches(0).Value else GetHostStatus = "Inaccessible!.." end if end function function Main() do WriteLog(GetHostStatus(conHost)) WScript.Sleep(conCheckInterval) ' Опрос хоста, анализ, вывод результата и пауза заданной длительности ( если разница в часах между текущем временем и заданным (19) составляет 0 - прерывам цикл) If DateDiff("h", Time(), TimeSerial(19, 0, 0)) = 0 Then Exit Do End If loop end function |
|
Отправлено: 17:17, 12-07-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Скрипт явно унаследованный.
Объясните цель и смысл действа: Цитата darkAge:
|
|
Отправлено: 17:51, 12-07-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Iska, тот, который пингует.
В целях безопасности. |
Последний раз редактировалось darkAge, 12-07-2013 в 18:01. Отправлено: 17:54, 12-07-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать darkAge, мне непонятен смысл «длительностью к примеру 10 секунд»: одного раза вполне достаточно.
Пробуйте (не проверялось): |
Отправлено: 18:36, 12-07-2013 | #4 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Вот что получается, что бы пока долго не ждать, сделал 60 секунд.
Option Explicit Const lngInterval = 60 ' (5 * 60) seconds Const lngFrequency = 10 ' every 10 seconds Dim strAddress Dim objSWbemServicesEx Dim objSWbemObjectEx Dim lngCurrentInterval strAddress = "192.168.4.1" ' or IP address Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2") lngCurrentInterval = 0 Do For Each objSWbemObject In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'") If Not IsNull(objSWbemObject.StatusCode) Then If objSWbemObject.StatusCode = 0 Then lngCurrentInterval = 0 End If End If Next If lngCurrentInterval >= lngInterval Then objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True For Each objSWbemObject In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem") objSWbemObject.Shutdown Next Exit Do End If WScript.Sleep lngFrequency lngCurrentInterval = lngCurrentInterval + lngFrequency Loop Set objSWbemServicesEx = Nothing WScript.Quit 0 |
|
Отправлено: 09:25, 15-07-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:34, 15-07-2013 | #6 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Добрый день Iska,
хотелось бы уточнить работу данного скрипта, т.к автор поста в отпуске, а скрипт надо вводить в действие. 1. данный скрипт запускается (допустим добавлением в автозагрузку) после чего осуществляется пинг удаленной машины на протяжении всего времени работы или только определенное время??? 2. пинг работает каждые 10 секунд в минуту??? 3. выключение будет осуществляться после 5 минут отсутствия связи с удаленной машиной??? т.е происходит анализ 50 неудачных попыток установить связь или последние 10 попыток???? 4. Где поменять параметр не на выключение, а на перезагрузку?? 5. Возможно дописать так, что бы был лог файл, с помощью которого можно было смотреть корректно ли отработал скрипт (перезагрузился после 50 неудачной попытки или 48!!!) |
Отправлено: 17:10, 22-07-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zavoruev:
Цитата zavoruev:
делается попытка получить ответ от удалённой машины. Если не было получено ни одного ответа от удалённой машины за указанный интервал времени: т.е., на шесть последовательных запросов не будет получено ни одного ответа — произойдёт попытка выключения текущей машины. Если же ответ будет получен — отсчёт интервала начнётся заново. Цитата zavoruev:
на: Reboot method of the Win32_OperatingSystem class (Windows). Цитата zavoruev:
![]() |
||||
Отправлено: 17:22, 22-07-2013 | #8 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Iska, т.е логика работы следующая
1. т.е каждые 10 секунд делается 1 запрос в виде icmp-пакета, за 60 секунд получается 6 запросов. Если будет стоять 300 секунд, соответственно в этом интервале будет 30 запросов. Я так понял???? 2. и только если Цитата Iska:
3. Цитата Iska:
Жду Вашей помощи!!!)) За ранее огромное спасибо! |
||
Отправлено: 18:24, 22-07-2013 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 1&2: Да.
Цитата zavoruev:
|
|
Отправлено: 18:34, 22-07-2013 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Службы - Проблема с выключением | Rommel | Microsoft Windows 8 и 8.1 | 15 | 01-12-2012 17:26 | |
Ошибка - [решено] Проблемы с выключением компа | Vlaleo | Лечение систем от вредоносных программ | 6 | 04-07-2011 12:17 | |
Любой язык - [решено] Запуск файла перед выключением компа. | S.T.R.E.L.O.K. | Скриптовые языки администрирования Windows | 6 | 04-09-2009 23:14 | |
Проблема с удалённым выключением компа. | NetSearcher | Microsoft Windows 2000/XP | 2 | 18-05-2007 15:49 | |
проблема с выключением | Bright | Microsoft Windows 2000/XP | 4 | 28-11-2006 23:15 |
|