|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Дописать скрипт для процедуры ping и записи в log.txt |
|
|
VBS/WSH/JS - [решено] Дописать скрипт для процедуры ping и записи в log.txt
|
Старожил Сообщения: 157 |
Всем добрый день!
Существует скрипт на VBS option explicit ' conHost -- адрес хоста для слежения ' conCheckInterval -- временной интервал const conHost = "192.0.0.22", conCheckInterval = 1000 ' создаём объект: dim soWshShell : set soWshShell = CreateObject("WScript.Shell") WScript.Quit Main() function WriteLog(strText) WScript.Stdout.WriteLine FormatDateTime(Time(), vbLongTime) & " " & 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) loop end function Необходимо что бы в лог. файле кроме врями пингов впереди была еще и дата, т.к запускается на несколько дней для выявлении колизии в сети. За ранее спасибо! |
|
Отправлено: 15:50, 09-10-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:50, 09-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Option Explicit Dim strHost Dim lngCheckInterval Dim objSWbemLocator Dim objSWbemServicesEx Dim collSWbemObjectSet Dim objSWbemObjectEx Dim objDictionary 'strHost = "google.com" strHost = "192.0.0.22" lngCheckInterval = 1000 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 Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(".", "root\cimv2") Do Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strHost & "'") For Each objSWbemObjectEx In collSWbemObjectSet With objSWbemObjectEx If Not IsNull(.StatusCode) Then WScript.Echo Now(), .Address, .StatusCode, "[" & objDictionary.Item(.StatusCode) & "]", .ResponseTime Else WScript.Echo Now(), "Error!" End If End With Exit For Next Set collSWbemObjectSet = Nothing WScript.Sleep lngCheckInterval Loop Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing Set objDictionary = Nothing WScript.Quit 0 |
Отправлено: 18:16, 09-10-2012 | #3 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Iska,
А подскажи пож-та, что делает второй скрипт и его принцип работы? Если можно то закоментировать процессы в самом скрипте. И еще раз большое спасибо)) Да, и еще один вопросик) Как можно автоматически завершить выполнение приведенного мною скрипта каждый день в 19.00. А шедулер будет запускать батник на следующий день! |
Отправлено: 19:22, 09-10-2012 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать zavoruev, примерно то же самое, только без «ping.exe». Принцип работы основан на Wbem, используется класс Win32_PingStatus.
Цитата zavoruev:
Цитата zavoruev:
Но Вы ведь Выше упоминали, что: Цитата zavoruev:
|
||||
Отправлено: 19:46, 09-10-2012 | #5 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата zavoruev:
Цитата Iska:
я не понял что значит это условие (т.е завершение или наоборот запуск скрипта) и что означают цифры? Как это условие применимо к моему скрипту???))) Цитата Iska:
После 3-х дней работы текстовый файл весил около 20 Мб, что очень много для моей задачи) |
||||
Последний раз редактировалось zavoruev, 09-10-2012 в 21:18. Отправлено: 21:09, 09-10-2012 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zavoruev:
Цитата zavoruev:
Do ' … здесь происходит опрос хоста, анализ, вывод результата и пауза заданной длительности. If DateDiff("h", Time(), TimeSerial(20, 0, 0)) = 0 Then Exit Do End If Loop Здесь я должен принести Вам свои извинения, поскольку ввёл Вас в заблуждение: когда я отлаживал скрипт, я менял значения времени, и, поменяв на 20, забыл вернуть потребные Вам 19; укажите там конечно же «TimeSerial(19, 0, 0)». Цитата zavoruev:
|
|||
Отправлено: 22:51, 09-10-2012 | #7 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Огромное человеческое спасибо за ответ!!!!
Цитата Iska:
Я не пишу скрипты, и очень сложно понять что за чем нужно, по этому и просил про пояснение ))) Цитата zavoruev:
|
||
Отправлено: 00:56, 11-10-2012 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zavoruev:
|
|
Отправлено: 06:07, 11-10-2012 | #9 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Остался всего один вопросик)))
Что необходимо написать в конце скрипта, что бы после завершения цикла автоматически закрывалось окно cmd.exe? В батнике это команда exit в окне cmd.exe, а вот что написать в скрипте что бы закрылось окно cmd.exe не знаю) |
Отправлено: 11:07, 11-10-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - Дописать в начало строки текст каждой записи в опредленном поле | Artem-Samsung | Программирование и базы данных | 7 | 02-10-2019 20:22 | |
Любой язык - Как сделать что-бы скрипт игнорировал не нужные ответы Ping | root221 | Скриптовые языки администрирования Windows | 13 | 02-09-2012 22:28 | |
Дописать php скрипт | retabo | Вебмастеру | 0 | 17-06-2012 04:07 | |
VBS/WSH/JS - Помогите дописать скрипт (пингует гугл и если не доступен ребутит модем) | cRYSMAS | Скриптовые языки администрирования Windows | 9 | 25-06-2011 23:34 | |
VBS/WSH/JS - [решено] Помогите дописать скрипт!!! | OSArev | Скриптовые языки администрирования Windows | 1 | 08-11-2010 21:50 |
|