Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте

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


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

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


Изменения
Автор: mrxMonster
Дата: 17-10-2011
Описание: добавил содержимое лога
Вложения
Тип файла: txt 123.txt
(321 байт, 6 просмотров)
Добрый день.
Помогите в написании скрипта, который будет:
1. Просматривать логи из определённой папки
2. Смотреть на последнюю запись и искать в ней слово "warning"
3. Если слово найдено, то сравнивать дату строчки с текущей датой
4. Если дата строчки не позднее 1 дня то отправлять на мыло всю строчку с данным словом.
Образец лога прилагается:

06.10.2011 9:03:51 GVA-XP002 Warning RAID:1
06.10.2011 11:16:45 GVA-XP002 Warning RAID:1
06.10.2011 11:31:33 GVA-XP002 Warning RAID:1
06.10.2011 11:35:52 GVA-XP002 Warning RAID:1
06.10.2011 12:45:14 GVA-XP002 Warning RAID:1
07.10.2011 12:45:49 GVA-XP002 OK
11.10.2011 13:09:22 GVA-XP002 Warning RAID:2

Отправлено: 15:12, 12-10-2011

 

Ветеран


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

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


Например, так:
Код: Выделить весь код
strLog = "E:\Песочница\0092\123.txt"
With WScript.CreateObject("Scripting.FileSystemObject")
	For Each strLog In Array("c:\My Log 01.txt", "c:\My Log 02.txt", "c:\My Log 0x.txt")
		If .FileExists(strLog) Then
			…
		End If
	Next
End With
Или в папке вовсе только логи и ничего кроме логов?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:25, 02-12-2011 | #11



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

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


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


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

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


Цитата Iska:
Или в папке вовсе только логи и ничего кроме логов? »
Да, папка предназначена только для логов таких как образец, за исключением названия!

Отправлено: 14:59, 03-12-2011 | #12


Ветеран


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

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


mrxMonster, ясно. Тогда, возможно, будет удобнее перебором всего, что есть в указанной папке:
Код: Выделить весь код
Option Explicit

Const ForReading       = 1

Const cdoSendUsingPort = 2
Const cdoBasic         = 1

Const strPartSchema    = "http://schemas.microsoft.com/cdo/configuration/"



Dim strLog
Dim strLine
Dim dtDateTime

strLogPath = "E:\Песочница\0092"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strLogPath) Then
		For Each objFile In .GetFolder(strLogPath).Files
			With objFile.OpenAsTextStream(ForReading)
				Do Until .AtEndOfStream
					strLine = .ReadLine()
				Loop
				
				.Close
			End With
			
			dtDateTime = CDate(Split(strLine)(0) & " " & Split(strLine)(1))
			
			If DateDiff("d", dtDateTime, Now()) <= 1 Then
				If UCase(Split(strLine)(3)) = UCase("Warning") Then
					With WScript.CreateObject("CDO.Message")
						With .Configuration.Fields
							.Item(strPartSchema & "sendusing")        = cdoSendUsingPort
							.Item(strPartSchema & "smtpauthenticate") = cdoBasic
							.Item(strPartSchema & "smtpserver")       = "smtp.mail.ru"
							.Item(strPartSchema & "smtpserverport")   = 25
							.Item(strPartSchema & "sendusername")     = "login"
							.Item(strPartSchema & "sendpassword")     = "password"
							
							.Update
						End With
						
						.To            = "to@mail.com"
						.From          = "from@mail.com"
						.Subject       = "Subject"
						.TextBody      = strLine
						
						.Send
					End With
				End If
			End If
		Next
	Else
		WScript.Echo "Log Folder [" & strLogPath & "] not found"
	End If
End With

WScript.Quit 0
Если у всех лог-файлов одинаковое расширение — можно сделать условие, чтобы при переборе отбирались именно файлы с таким расширением (так сказать, некоторая защита от случайно попавших в папку файлов).

Отправлено: 19:35, 03-12-2011 | #13


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


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

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


В моей папке логов четыре файла. Названия им raidGVA-XP002.log raidGVA-XP061.log raidGVA-XP068.log raidGVA-XP112.log.
В файле raidGVA-XP002.log есть запись, которая должна вызвать отправку сообщения на почту, но скрипт пишет:
Переменная не определена: 'strLogPath'
Что делать? Где править?

Отправлено: 13:58, 06-12-2011 | #14


Ветеран


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

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


Если речь про #13, то, очевидно, здесь:
Код: Выделить весь код
Dim strLog
Dim strLogPath

Отправлено: 16:01, 06-12-2011 | #15


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


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

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


Цитата Iska:
Если речь про #13, то, очевидно, здесь:
Код:
Dim strLog
Dim strLogPath »
Я тоже так сразу подумал, но после этого:
Переменная не определена: 'objFile'

В папке лежат файлы txt и log для верности. Или же тут в другом проблемма?

Отправлено: 09:49, 07-12-2011 | #16


Ветеран


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

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


Дело в том, что последний вариант скрипта (#13) я писал «на ощупь», не запуская его для проверки.

Добавить «Dim objFile» туда же, ниже «Dim strLogPath»:
Код: Выделить весь код
Dim strLogPath

Dim objFile
P.S. Может быть, переделать для работы только с лог-файлами и по маске? Судя по приведённым Вами выше именам файлов, у них есть постоянная и переменная части в именах.

Отправлено: 12:26, 07-12-2011 | #17


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


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

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


Я не смог справится ни с первой интеграцией ни со второй. У меня скрипт работает только с указанием на конкретный файл.
Если можно, покажите вариант с перебором всех логов в папке по маске GVA-XP***.log

Отправлено: 15:18, 07-12-2011 | #18


Ветеран


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

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


mrxMonster, лады. Только — либо вечером, либо ближе к утру.

Отправлено: 15:35, 07-12-2011 | #19


Ветеран


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

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


mrxMonster, пробуйте:
Код: Выделить весь код
Option Explicit

Const ForReading       = 1

Const cdoSendUsingPort = 2
Const cdoBasic         = 1

Const strPartSchema    = "http://schemas.microsoft.com/cdo/configuration/"


Dim strLogPath
Dim objFile
Dim objRegExp

Dim strLine
Dim dtDateTime


strLogPath = "E:\Песочница\0098"

Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
	.IgnoreCase = True
	.Pattern    = "GVA-XP\d{3}\.log"
End With

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strLogPath) Then
		For Each objFile In .GetFolder(strLogPath).Files
			If objRegExp.Test(objFile.Name) Then
				With objFile.OpenAsTextStream(ForReading)
					Do Until .AtEndOfStream
						strLine = .ReadLine()
					Loop
					
					.Close
				End With
				
				dtDateTime = CDate(Split(strLine)(0) & " " & Split(strLine)(1))
				
				If DateDiff("d", dtDateTime, Now()) <= 1 Then
					If UCase(Split(strLine)(3)) = UCase("Warning") Then
						With WScript.CreateObject("CDO.Message")
							With .Configuration.Fields
								.Item(strPartSchema & "sendusing")        = cdoSendUsingPort
								.Item(strPartSchema & "smtpauthenticate") = cdoBasic
								.Item(strPartSchema & "smtpserver")       = "smtp.mail.ru"
								.Item(strPartSchema & "smtpserverport")   = 25
								.Item(strPartSchema & "sendusername")     = "login"
								.Item(strPartSchema & "sendpassword")     = "password"
								
								.Update
							End With
							
							.To            = "to@mail.com"
							.From          = "from@mail.com"
							.Subject       = "Subject"
							.TextBody      = strLine
							
							.Send
						End With
					End If
				End If
			End If
		Next
	Else
		WScript.Echo "Log Folder [" & strLogPath & "] not found"
	End If
End With

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:44, 08-12-2011 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Помогите доработать скрипт отправки по почте с аттачем diavard Скриптовые языки администрирования Windows 4 21-02-2011 14:55
[решено] Скрипт для отправки файлов или просто текста на определенный E-mail wwe AutoIt 2 02-02-2010 18:15
скрипт отправки почты stolyar Вебмастеру 10 04-01-2010 18:23
Как прикрепить файл для отправки по электронной почте в CMS Joomla? SashaKl Вебмастеру 1 12-06-2009 15:44
скрипт формы отправки на мыло Denis Shutka Вебмастеру 1 10-01-2005 02:57




 
Переход