Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ping с выключением компа

Ответить
Настройки темы
VBS/WSH/JS - [решено] Ping с выключением компа

Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всех приветствую.
Задачу новую поставили мне, есть у нас скрипт который пингует нужную машину заданное количество времени

Код: Выделить весь код
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
Нужно его доработать, что бы он пинговал нужную машину раз в минуту на пример, длительностью к примеру 10 секунд, и если пинг отсутствует в течении допустим 5 минут, то компьютер выключался.

Отправлено: 17:17, 12-07-2013

 

Старожил


Сообщения: 157
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Зачем он Вам сдался? Ну, отключите сетевой кабель, отсчитайте минуту с небольшим, машина пошла на перезагрузку? »
Согласен с Вами на 100%. Проверил, работает, и хорошо!!!

Но это еще необходимо для анализа среды передачи данных (радиоканал), т.к запускать второй скрипт приведенный в начале поста для анализ прохождения icmp пакетов не хочется. А так этот скрипт будет запускается по задаче в 8.00 утра, выключается в 23.30 и собирает логи. Сразу 2-х зайцев убиваю))))
Если это сложно, и займет время, то тогда не надо!

И еще один вопрос,
1. что это за параметр
Цитата:
"SeShutdownPrivilege"
вот в этой строке
Цитата:
objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True
2. И нужно его менять если я тут
Цитата Iska:
Код:
objSWbemObjectEx.Shutdown »
поменяю на Reboot

Отправлено: 18:54, 22-07-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата zavoruev:
запускать второй скрипт приведенный в начале поста для анализ прохождения icmp пакетов не хочется. А так этот скрипт будет запускается по задаче в 8.00 утра, выключается в 23.30 и собирает логи. »
В начале поста? Может быть темы?! Тогда ткните мне пальцем где именно в нём осуществляется «анализ прохождения» и где «собираются логи».

Скажите, что Вы понимаете под «анализом среды передачи данных» и что для этого необходимо.
Цитата zavoruev:
что это за параметр «SeShutdownPrivilege» вот в этой строке… И нужно его менять если…»
SWbemPrivilegeSet.AddAsString method (Windows)
Privilege Constants (Windows)
WMI: сеансы пользователя
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:11, 23-07-2013 | #12


Старожил


Сообщения: 157
Благодарности: 3

Профиль | Отправить PM | Цитировать


Доброе утро!!!!

Так сам скрипт который в начале поста, осуществляет запись результатов ping с прекращением работы в 19.00 (кстати этот скрипт дорабатывали именно Вы Iska, , за что Вам отдельное спасибо). Вот по этому, по умолчанию, я думал что будет переработан это скрипт с вариантом выключения/перезагрузки хоста.

Цитата Iska:
Скажите, что Вы понимаете под «анализом среды передачи данных» и что для этого необходимо. »
Так как это радиоканал, то необходимо иногда смотреть логи на наличие/отсутствие пинга, время запроса-ответа ( качество радиоканала зависит от времени суток, погоды, и помех на определенной частоте, шумов). И иногда при отсутствии канала или его плохом качестве логирование спасет мир)))))

Я же говорил выше
Цитата zavoruev:
Если это сложно, и займет время, то тогда не надо! »
Цитата Iska:
Цитата zavoruev:
что это за параметр «SeShutdownPrivilege» вот в этой строке… И нужно его менять если…» »
Цитата Iska:
WMI: сеансы пользователя »
Спасибо, все понятно!!!!

Отправлено: 08:54, 23-07-2013 | #13


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата zavoruev:
который в начале поста »
Вы понимаете, что означает заимствованное слово «пост»?


Цитата zavoruev:
логирование спасет мир))))) »
Вот я и прошу Вас рассказать мне подробно, в деталях, что и когда должно помещаться в лог-файл.

Отправлено: 09:06, 23-07-2013 | #14


Старожил


Сообщения: 157
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вы понимаете, что означает заимствованное слово «пост»? »
Хорошо, не поста, топика)))) признаю что не прав!!!

Цитата Iska:
Вот я и прошу Вас рассказать мне подробно, в деталях, что и когда должно помещаться в лог-файл. »
Цитата zavoruev:
А так этот скрипт будет запускается по задаче в 8.00 утра, выключается в 23.30 и собирает логи. »
Цитата zavoruev:
нужен лог только в момент пинга.»
Получается что если это будет цикл будет 300 секунд и каждые 10 секунд будет выполняться запрос к удаленному хосту, то надо писать логи только 30 запросов.
Ну вот как бы и вся задача по сбору логов!!))

Отправлено: 09:15, 23-07-2013 | #15


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


zavoruev, дело осталось за малым, и я таки надеюсь, что Вы мне с третьей попытки всё-таки расскажете, что именно должно помещаться в лог.

Отправлено: 10:28, 23-07-2013 | #16


Старожил


Сообщения: 157
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата zavoruev:
Так сам скрипт который в начале поста, осуществляет запись результатов ping с прекращением работы в 19.00 (кстати этот скрипт дорабатывали именно Вы Iska, , за что Вам отдельное спасибо). Вот по этому, по умолчанию, я думал что будет переработан это скрипт с вариантом выключения/перезагрузки хоста »
Надо там поправить не поста, а темы!!!

Вот тема, где Вы Iska, дописывали скрипт, т.к изначально в нем не было даты!!!
http://forum.oszone.net/thread-244258.html

и запускает этот vbs скрипт cmd файл с указанием куда писать
Цитата:
cscript d:\ping\pingtime.vbs > d:\ping\ping.txt
, а что писать обозначено в скрипте который в начале темы!!!!!!!

Вот точный вид лога, который создается скриптом в начале темы:
Код: Выделить весь код
‘ҐаўҐа бжҐ**аЁҐў Windows (Microsoft R) ўҐабЁп 5.8
c Љ®аЇ®а*жЁп Њ*©Єа®б®дв (Microsoft Corp.), 1996-2001. ‚ᥠЇа*ў* §*йЁйҐ*л.

21.06.2013 14:14:21 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
21.06.2013 14:14:22 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
21.06.2013 14:14:23 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
21.06.2013 14:14:24 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=2¬б TTL=64
21.06.2013 14:14:25 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=8¬б TTL=64
21.06.2013 14:14:26 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=3¬б TTL=64
21.06.2013 14:14:27 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
21.06.2013 14:14:28 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
21.06.2013 14:14:30 192.168.1.21: зЁб«® Ў*©в=32 ўаҐ¬п=1¬б TTL=64
сейчас я надеюсь понятно объяснил??!!! Только в нашем варианте будет логироваться 1 пинг в 10 секунд ( по Вашему предложению)!!

Последний раз редактировалось zavoruev, 23-07-2013 в 11:28.


Отправлено: 11:06, 23-07-2013 | #17


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Как-то так:
читать дальше »
Код: Выделить весь код
Option Explicit

Const lngInterval  = 60 ' seconds
Const lngFrequency = 10 ' every 10 seconds


Dim objDictionary

Dim strAddress

Dim objSWbemServicesEx
Dim objSWbemObjectEx

Dim lngCurrentInterval


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
	.Add 0,     "Success"
	.Add 11001, "Buffer Too Small"
	.Add 11002, "Destination Net Unreachable"
	.Add 11003, "Destination Host Unreachable"
	.Add 11004, "Destination Protocol Unreachable"
	.Add 11005, "Destination Port Unreachable"
	.Add 11006, "No Resources"
	.Add 11007, "Bad Option"
	.Add 11008, "Hardware Error"
	.Add 11009, "Packet Too Big"
	.Add 11010, "Request Timed Out"
	.Add 11011, "Bad Request"
	.Add 11012, "Bad Route"
	.Add 11013, "TimeToLive Expired Transit"
	.Add 11014, "TimeToLive Expired Reassembly"
	.Add 11015, "Parameter Problem"
	.Add 11016, "Source Quench"
	.Add 11017, "Option Too Big"
	.Add 11018, "Bad Destination"
	.Add 11032, "Negotiating IPSEC"
	.Add 11050, "General Failure"
End With

strAddress = "MyServer" ' or IP address

Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")

lngCurrentInterval = 0

Do
	For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
		With objSWbemObjectEx
			If Not IsNull(.StatusCode) Then
				WScript.Echo Now(), .Address, .StatusCode, "[" & objDictionary.Item(.StatusCode) & "]", .ResponseTime
				
				If .StatusCode = 0 Then
					lngCurrentInterval = 0
				End If
			Else
				WScript.Echo Now(), .Address, "Error!"
			End If
		End With
	Next
	
	If lngCurrentInterval >= lngInterval Then
		objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True
		
		For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
			'objSWbemObjectEx.Reboot
		Next
		
		Exit Do
	End If
	
	WScript.Sleep lngFrequency * 1000
	
	lngCurrentInterval = lngCurrentInterval + lngFrequency
Loop

Set objSWbemServicesEx = Nothing

objDictionary.RemoveAll()
Set objDictionary = Nothing

WScript.Quit 0

?!
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:40, 23-07-2013 | #18


Старожил


Сообщения: 157
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
Как-то так: »
А куда в код скрипта добавить вот это
Код: Выделить весь код
' Опрос хоста, анализ, вывод результата и пауза заданной длительности ( если разница в часах между текущем временем и заданным (19) составляет 0 - прерывам цикл)
If DateDiff("h", Time(), TimeSerial(19, 0, 0)) = 0 Then
          Exit Do
     End If
ограничение по времени работы скрипта!!!!

Остальное все работает!!!!! ))))))

Последний раз редактировалось zavoruev, 23-07-2013 в 14:13.


Отправлено: 14:00, 23-07-2013 | #19


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата zavoruev:
А куда в код скрипта добавить вот это … ограничение по времени работы скрипта!!!! »
Сюда:

.

Пардон, коль:
Цитата zavoruev:
А так этот скрипт будет запускается по задаче в 8.00 утра, выключается в 23.30 »
то, не «11:00», а «15:30».

Отправлено: 14:51, 23-07-2013 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ping с выключением компа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Проблема с выключением 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




 
Переход