<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: мониторинг процессов и уведомление на email]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8918</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8918&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: мониторинг процессов и уведомление на email».]]></description>
		<lastBuildDate>Sun, 17 Nov 2013 08:09:38 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBS: мониторинг процессов и уведомление на email]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=77372#p77372</link>
			<description><![CDATA[<p>Форумчане, день добрый помогите допилить скрипт. Сам не силен.<br />Сам скрипт vbs</p><p>Назначение скрипта: Запуск по шелдуру, мониторинг запущенных процессов указанных в коде, при отсутствии запущенного процесса, запускать его, и отправлять email.</p><div class="codebox"><pre><code>
Option Explicit
Dim objSWbemServicesEx
Dim intProcessID

Dim strSMTPServer
Dim strSmtpPort
Dim strSmtpAuth
Dim strSmtpSsl
Dim strDate
Dim strSendingEmail
Dim strReportEmail
Dim objMessage

rem Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Process&quot;)
rem Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate,(debug)}!\\.\root\CIMV2&quot;)
If objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_Process WHERE Name = &#039;notepad1.exe&#039;&quot;).Count = 0 Then
    If objSWbemServicesEx.Get(&quot;Win32_Process&quot;).Create(&quot;c:\prorgamma\01\notepad1.exe&quot;, Null, intProcessID) = 0 Then
Call sendMail
    End If      
End If 


Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate,(debug)}!\\.\root\CIMV2&quot;)
If objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_Process WHERE Name = &#039;notepad2.exe&#039;&quot;).Count = 0 Then
    If objSWbemServicesEx.Get(&quot;Win32_Process&quot;).Create(&quot;c:\prorgamma\02\notepad2.exe&quot;, Null, intProcessID) = 0 Then
Call sendMail
    End If      
End If 

Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate,(debug)}!\\.\root\CIMV2&quot;)
If objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_Process WHERE Name = &#039;notepad3.exe&#039;&quot;).Count = 0 Then
    If objSWbemServicesEx.Get(&quot;Win32_Process&quot;).Create(&quot;c:\prorgamma\03\notepad3.exe&quot;, Null, intProcessID) = 0 Then
Call sendMail
    End If      
End If 



Function sendMail()
strSmtpServer=&quot;mx&quot; &#039; имя почтового сервера, в моем случае это Exchange
strSmtpPort=25
strSmtpAuth=&quot;no&quot;
strSmtpSsl=&quot;no&quot;
strDate=date
strSendingEmail=&quot;mail send&quot; &#039; Имя отправителя
strReportEmail=&quot;mail&quot; &#039; Имя получателя
&#039;WScript.Echo logPath &amp; &quot;/backup&quot; &amp; strDate &amp; &quot;.html&quot;
Set objMessage = CreateObject(&quot;CDO.Message&quot;)
objMessage.Configuration.Fields.Item(&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;) = 2
objMessage.Configuration.Fields.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;) = strSmtpServer
objMessage.Configuration.Fields.Item(&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;) = strSmtpPort
If strSmtpAuth = &quot;yes&quot; Then
End If
If strSmtpSsl = &quot;yes&quot; Then
End If
objMessage.Configuration.Fields.Update
objMessage.Subject = &quot;Notepad &quot; &amp; strDate &amp; &quot;.&quot;
objMessage.From = strSendingEmail
objMessage.To = strReportEmail
rem objMessage.HtmlBody = &quot;Рестарт Notepad&quot;
objMessage.TextBody = &quot;Restart Notepad&quot;
objMessage.Send
End Function

</code></pre></div><p>Убрал несколько параметров где ссылки на отправку email, а то форма не давала создать тему.<br />Программа notepad взята как тест. На самом деле будет не две программы, а около 30. Поэтому в примере, чтобы код был не большой указал всего 3. </p><p>Очень хочется добавить в функционал скрипта<br />1. В полях отправки email чтобы objMessage.Subject и objMessage.TextBody писались имена тех процессов которые были перезапущены. Например если закрылась программа notepad2, скрипт её запустил и отправил email где в полях Тема и тело письма писалось что это notepad2.exe<br />2. Не уверен что правильная структура кода проверки и запуска процесса, она хоть и работает, но не на 100%. Бывает такое что приложения которые скрипт запускает до конца не запускаются <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Например мои приложения когда полностью запущены весят в памяти 50МБ, так вот, когда скрипт запускает приложение, оно загружается до 20МБ и вылетает. А если в тотже момент самому тыкнуть на ярлык приложение, оно 100% запустится.&nbsp; Я не могу понять из-за чего это, но и не всегда это происходит. Есть предположения только, не хватает дескрипторов ресурсов. Также прочитал про интерактивный и не интерактивный режим запуска, возможно из-за этого приложение полностью не может загрузится. Т.е. скрипт неправильно написан для режима запуска.</p><p>Спасибо, что дочитали до сюда <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (wuratew)]]></author>
			<pubDate>Sun, 17 Nov 2013 08:09:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=77372#p77372</guid>
		</item>
	</channel>
</rss>
