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

Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Добрый день.

Помогите в написании скрипта, который будет:

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
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Подскажите код для поиска слова из текстового файла?
Аватара пользователя
Iska

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

Сообщение Iska »

Например, так:



Код:

Код: Выделить всё

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

Или в папке вовсе только логи и ничего кроме логов?
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Цитата mrxMonster:



Разъясните мне ситуацию, почему ни один человек никоим образом не прокаментировал мои вопросы?
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Задача не интересная.



Попробуйте:



Код:

Код: Выделить всё

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
strLog = "E:\Песочница\0092\123.txt"
With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strLog) Then
		With .OpenTextFile(strLog, 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
	Else
		WScript.Echo "File [" & strLog & "] not found"
	End If
End With
WScript.Quit 0

Вариант скрипта не оптимален: нужно знать, что это за лог, как часто в него пишется информация, каков его средний размер.
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Цитата Iska:



Вариант скрипта не оптимален: нужно знать, что это за лог, как часто в него пишется информация, каков его средний размер.
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Спасибо огромнейшее за ответ!



Это простой текстовый лог, который пишется другим скриптом из системного журнала. Для каждой машины свой лог, но в одну папку, потому и названия будут схожи у файлов. Информация в него пишется каждый день, вернее при каждом логине системы. Средний размер где то 10 кило для файла(увеличивается с каждой записью).



Я попробовал этот код, последнюю строчку он показыват, но что косаемо проверки его даты тут непонятно. Ни ошибок ни результата.
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Давайте сначала разберёмся с работоспособностью:


Цитата mrxMonster:



Я попробовал этот код, последнюю строчку он показыват, но что косаемо проверки его даты тут непонятно. Ни ошибок ни результата.
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Я создал файл «E:\Песочница\0092\123.txt», записал в него
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте
текст, добавил строчку:



Код:

Код: Выделить всё

28.11.2011 13:09:22 GVA-XP002 Warning RAID:2

обозначающую сегодняшнюю дату, заменил болванки в:



Код:

Код: Выделить всё

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

на реальные данные и запустил скрипт. Письмо было отправлено на заданный адрес. А что у Вас?
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Прошу прощения за свою невнимательность, я просто забыл в лог добавить запись с актуальной датой ошибки.

После внесения изменения скрипт отреагировал по другому и выдал ошибку:



Ошибка: Сервер отклонил адрес отправителя. Отклик сервера: 501

sender address must match authenticated user



код: 8004020E

Источник: (null)



Я ещё раз всё проверил и понял, что sendusername и параметр .to должны быть одинаковы.

После скрипт заработал как нужно.



У меня ещё один вопрос:

Как не писать логин и пароль от почты в таком открытом виде? Скрипт будет использоваться в доменном пространстве и мне хотелось бы знать можно ли использовать возможности домена для логина?
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата mrxMonster:



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




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


Цитата mrxMonster:



Скрипт будет использоваться в доменном пространстве и мне хотелось бы знать можно ли использовать возможности домена для логина?
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Поясните, пожалуйста.
Аватара пользователя
mrxMonster

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

Сообщение mrxMonster »

Update: Решил добавить…




Цитата mrxMonster:



Я ещё раз всё проверил и понял, что sendusername и параметр .to должны быть одинаковы.
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Раньше потребности в этом не возникало. Но, благодаря вирусописателям и спамерам, рассылавшим всякие гадости от имени «admins@yourdomain.com» и т.п., практически все сервера давно уже требуют этого, как минимальной меры предосторожности.
Аватара пользователя
Iska

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

Сообщение Iska »

Кстати, говорилось что бдут несколько логов (у каждой машины свой лог) в одной папке


Цитата mrxMonster:



1. Просматривать логи из определённой папки
VBS/WSH/JS - [решено] скрипт обработки лог файлов и отправки уведомлений по почте




Как заставить скрипт просматривать их по очереди?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»