|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] [решено] VBS: мониторинг процессов и уведомление на email |
|
VBS/WSH/JS - [решено] [решено] VBS: мониторинг процессов и уведомление на email
|
Новый участник Сообщения: 20 |
Форумчане, день добрый помогите допилить скрипт. Сам не силен.
Сам скрипт vbs Назначение скрипта: мониторинг запущенных процессов указанных в коде, при отсутствии запущенного процесса, запускать его, и отправлять email. Программа notepad взята как тест. На самом деле будет не три программы, а около 30. Поэтому в примере, чтобы код был не большой указал всего 3. Какая длина при 30 программ думаю представляете. Возможно как-то это можно упростить, но я увы не знаю ![]() Очень хочется добавить в функционал скрипта 1. В полях отправки email чтобы objMessage.Subject и objMessage.TextBody писались имена тех процессов которые были перезапущены. Например если закрылась программа notepad2, скрипт её запустил и отправил email где в полях Тема и тело письма писалось что это notepad2.exe 2. Не уверен что правильная структура кода проверки и запуска процесса, она хоть и работает, но не на 100%. Бывает такое что приложения которые скрипт запускает до конца не запускаются smile. Например мои приложения когда полностью запущены весят в памяти 50МБ, так вот, когда скрипт запускает приложение, оно загружается до 20МБ и вылетает. А если в тотже момент самому тыкнуть на ярлык приложение, оно 100% запустится. Я не могу понять из-за чего это, но и не всегда это происходит. Есть предположения только, не хватает дескрипторов ресурсов. Также прочитал про интерактивный и не интерактивный режим запуска, возможно из-за этого приложение полностью не может загрузится. Т.е. скрипт неправильно написан для режима запуска. 3. Для чего строка в скрипте ? 'WScript.Echo logPath & "/backup" & strDate & ".html" Спасибо, что дочитали до сюда ![]() |
|
Отправлено: 23:25, 17-11-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Option Explicit Const cdoSendUsingPort = 2 Const cdoBasic = 1 Const strSchema = "http://schemas.microsoft.com/cdo/configuration/" Dim arrProcesses Dim strComputer Dim objSWbemLocator Dim objSWbemServicesEx Dim collSWbemObjectSet Dim objSWbemObjectEx Dim elem Dim objFSO Dim lngProcessID arrProcesses = Array("C:\WINDOWS\system32\notepad.exe", "C:\WINDOWS\system32\calc.exe", "C:\WINDOWS\system32\mspaint.exe") strComputer = "." Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2") Set collSWbemObjectSet = objSWbemServicesEx.ExecNotificationQuery("SELECT * From __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Do Set objSWbemObjectEx = collSWbemObjectSet.NextEvent.TargetInstance For Each elem In arrProcesses If objSWbemObjectEx.Name = objFSO.GetFileName(elem) Then With WScript.CreateObject("CDO.Message") .From = "account@mail.ru" .To = "account@yandex.ru" .Subject = "Process [" & objFSO.GetFileName(elem) & "] closed." If objSWbemServicesEx.Get("Win32_Process").Create(elem, objFSO.GetParentFolderName(elem), Nothing, lngProcessID) = 0 Then .Textbody = Now() & vbTab & "Process [" & elem & "] successfully started." Else .Textbody = Now() & vbTab & "Can't create process [" & elem & "]." End If With .Configuration.Fields .Item(strSchema & "smtpserver") = "smtp.mail.ru" .Item(strSchema & "sendusing") = cdoSendUsingPort .Item(strSchema & "smtpserverport") = 25 .Item(strSchema & "smtpauthenticate") = cdoBasic .Item(strSchema & "sendusername") = "account@mail.ru" .Item(strSchema & "sendpassword") = "password" .Update End With .Send End With Exit For End If Next Loop Set objFSO = Nothing Set collSWbemObjectSet = Nothing Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing WScript.Quit 0 |
Отправлено: 01:20, 20-11-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Iska, спасибо большое за пример, но немного не то.
|
Отправлено: 22:52, 28-11-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать novi, поясните, что именно Вас не устраивает, либо — что я понял из Вашего техзадания неверно.
|
Отправлено: 00:46, 29-11-2013 | #4 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Iska,
При загрузке ОС, выполняется автовход, скрипт (в автозагрузке) другой, не тот что указал в шапке темы, запускает мои определённые программы, штук 20. Далее, уже скрипт который в шапке, добавлен в "планировщик заданий", который запускает мой скрипт каждые 10 минут, и проверяет наличие запущенных процессов. Если процесс закрылся, то скрипт его запускает. Скрипт сам в памяти висит только до тех пор, пока все не проверит, потом закрывается. Также в моём скрипте важная строчка: objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2 'use '2' for NTLM или strSmtpAuth="no" , тобы не логиниться. Проверив Ваш скрипт, получается следующее. Скрипт постоянно висит в памяти. Даже если программы не запущена, он их не запускает, а просто висит. Попытка запустить вручную программу и потом её в ручную закрыть получаю ошибку. После появлении ошибки скрипт выгружается. Может конечно из-за того что я неправильно скорректировал ваш скрипт под себя, а именно smtp в скрипте. Подскажите что изменить, чтобы без авторизации отправлялись письма? |
|
Последний раз редактировалось novi, 29-11-2013 в 22:03. Причина: Исправил ошибки в тексте. Отправлено: 21:53, 29-11-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать novi, ясненько. Давайте уточним: приложения, которые запускает скрипт в автозагрузке, и приложения, за процессами которых должен следить и вновь запускать второй скрипт — одни и те же?
Цитата novi:
Цитата novi:
Цитата novi:
Цитата novi:
Но разве такие сервера остались? |
||||
Отправлено: 01:43, 30-11-2013 | #6 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
![]() Цитата Iska:
В принципе скрипт сверху, этим всем и занимался. Тока не всё умел делать ![]() |
|||
Отправлено: 10:36, 30-11-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте:
Как и просили, отсылка без авторизации. Если запуск каких-то приложений отличается от обычного (минимизация/скрытие окна, приоритет отличен от Normal, рабочий каталог отличен от каталога приложения и т.п.) — говорите, будем усложнять логику. Цитата novi:
Цитата novi:
Цитата novi:
![]() |
|||
Отправлено: 07:03, 01-12-2013 | #8 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Цитата Iska:
1 вариант проверил: не запуская программ, запустил скрипт. Скрипт указанные программы запустил, в диспетчере задач они видны, а в нижней панели "панель задач", их нету ![]() Идём далее, с помощью диспетчера задач, выгружаем принудительно одну из программ запущенных скриптом, и вылетает ошибка. Выложил скрин. 2 вариант проверил: с начало запустил все свои программы указанные в скрипте, они нормально отображаются в диспетчере задач. Запускаю скрипт, он ещё раз их запускает, и те которые запустил именно скрипт их не видно. А в диспетчере задач их стало в два раза больше. Т.е. в диспетчере задач следующая картина: по два процесса каждой программы. Оба варианта не оч гуд. Я наверно это не сказал. Запуск программ происходит как в обычном режиме (т.е. если бы мы сами ткнули мышкой на ярлык программы), т.е. запустил программу, и она отобразилась в панеле задач. Цитата Iska:
Цитата Iska:
Бывает такое, что приложения которые скрипт запускает, до конца не запускаются smile. (Это происходит например: запущено 30 программ, по истечении например 2-3-4 недель, эти программы в памяти уже занимаю не 50 мб, а от 70 до 100МБ, после этого скрипт не всегда может запустить эту программу.) Например мои приложения когда полностью запущены занимают в памяти 50МБ, проходит время, эти приложения могут съесть ОЗУ до 100 МБ, (ОЗУ на хосте хватает, не внём дело 100%) так вот, когда скрипт запускает приложение, оно загружается до 20МБ и вылетает. А если в тот же момент самому ткнуть на ярлык приложения, оно 100% запустится. Я не могу понять из-за чего это, но и не всегда это происходит. Есть предположения только, не хватает дескрипторов ресурсов ОС Windows. Также прочитал про интерактивный и не интерактивный режим запуска, возможно из-за этого приложение полностью не может загрузится. Т.е. мой скрипт неправильно написан для режима запуска. В общем загадка ![]() Цитата Iska:
Цитата Iska:
![]() Цитата Iska:
c:\Programma\Notepad01\notepad01.exe c:\Programma\Notepad02\notepad02.exe c:\Programma\Notepad03\notepad03.exe c:\Programma\Notepad04\notepad04.exe c:\Programma\Notepad05\notepad05.exe и т.д. Вы правы, в идеале хотелось бы получить именно минимизацию. Приоритет пусть будет стандартный, как если бы мы запустили приложение вручную, тыкнув по ярлыку. И также Вы верно подметили, есть часть (не все) приложений, которые умеют скрываться в трей ![]() |
||||||
Последний раз редактировалось novi, 01-12-2013 в 11:59. Отправлено: 11:47, 01-12-2013 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата novi:
Давайте уточним, выложенный мною скрипт (с Вашими путями, разумеется) Вы запускали обычным двойным щелчком из Проводника? Или как-то иначе, например, из-под Диспетчера задач? Цитата novi:
Цитата novi:
![]() Цитата novi:
Цитата novi:
Цитата novi:
|
||||||
Отправлено: 13:13, 01-12-2013 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Отправка скриншота на email | andrew_gurylyov@vk | Скриптовые языки администрирования Windows | 22 | 23-02-2012 11:52 | |
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs | nod201 | Скриптовые языки администрирования Windows | 0 | 05-12-2009 05:44 | |
выключение servera на email | kurt17 | Microsoft Windows NT/2000/2003 | 4 | 22-07-2009 07:27 | |
Уведомление на e-mail | GSVG | О сайте и форуме | 4 | 17-03-2007 09:37 | |
Уведомление о e- mail на телефон | Sherla | Мобильные ОС, смартфоны и планшеты | 5 | 28-07-2003 22:31 |
|