Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

VBScript: Мониторинг дерриктории?

21K
27 июля 2007 года
teCa
16 / / 07.06.2007
По VBScript'у тут можно спросить?
92
27 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
да, можно.
21K
27 июля 2007 года
teCa
16 / / 07.06.2007
ну тогда слушайте)

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

Код:
strDir = "\\Shares\\Admins docs\\"
strComputer = "fs"
Dim Body
               
Function SendPost(strSMTP_Server, strTo, strFrom, strSubject, strBody)
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    Set Flds = iConf.Fields
    Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP_Server
    Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
    Flds.Update
    iMsg.Configuration = iConf
    iMsg.To = strTo
    iMsg.From = strFrom
    iMsg.Subject = strSubject
    iMsg.TextBody = strBody
    iMsg.Send
End Function
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMv2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
   "TargetInstance ISA 'CIM_DataFile'" & _
   " AND TargetInstance.Drive = 'e:'" & _
   " AND TargetInstance.Path ='" & strDir & "'")

Do While(True)
    Set objReceivedEvent = objEvents.NextEvent
    Body = "File modifed: " & objReceivedEvent.TargetInstance.FileName & "  " & objReceivedEvent.TargetInstance.Name
        Call SendPost("mail2", "kloodj@xxx.ru", "apatkin@xxx.ru", "File modifed", body)
   
 
'    WScript.Echo "File modifed: " & objReceivedEvent.TargetInstance.FileName
'    WScript.Echo "Name: " & objReceivedEvent.TargetInstance.Name
   
Loop





Все хорошо, но возникают проблеммы с кодировкой имен файлов записаных на кирилице.
И хочется отслеживать какое именно событие происходит? Например создан, модифицирован, удален?

А также можно ли реализовать чтобы скрипт так же отслеживал сабдерриктории?
92
27 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
Ganzales ;)

готового решения не будет (я имею в виду код), а подсказать что смогу - подскажу )

проход по поддиректориям выполняется рекурсией, содание файлов проверяется наличием в массиве нового элемента. т.е. создаешь на новом шаге новый массив, и сравниваешь с предыдущим, если есть изменения, отправляешь это юзеру. не забывай только старый массив удалять :)

а на VBS я лично не писал )
21K
27 июля 2007 года
teCa
16 / / 07.06.2007
Да хочется вот через WMI сделать, в принципе я думаю как, к WMI серверу запрос падается формата T-SQL, те

 
Код:
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
    "TargetInstance ISA 'CIM_DataFile'" & _
    " AND TargetInstance.Drive = 'e:'" & _
    " AND TargetInstance.Path = '\\shares\\Admins docs\\'")

По этому запросу мы получаем список евентов удавлетваряющему этим условиям, если провести аналогию к T-SQL и привести запрос к виду:

 
Код:
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
    "TargetInstance ISA 'CIM_DataFile'" & _
    " AND TargetInstance.Drive = 'e:'" & _
    " AND TargetInstance.Path Like '\\shares\\Admins docs\\%'")


то в принципе мы должны уже собирать все евенты где в TargetInstance.Path присутствует кусок "\\shares\\Admins docs\\", а следовательно он будет присутствовать в путях всех сабдеррикторий.

Вот только на практике эт чет не работает.
13K
27 июля 2007 года
ProgSoldier
58 / / 05.12.2006
Цитата: teCa
По VBScript'у тут можно спросить?


А WEB-программирование то тут при чем?

92
27 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
http://www.computerperformance.co.uk/vbscript/wmi.htm там слева мнавигация, есть логи, вот там на примере разбирается просмотр логов создания файлов и директорий... вот попробуй оттуда плясать...
92
27 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
Цитата: ProgSoldier
А WEB-программирование то тут при чем?


я хз, но на ЦитФоруме пишут что VBScript имеет отношение к Web-программированию :) да и тем более чела из Basic раздела послали ))))
[quote=CitForum]
VBScript позволяет решать задачи, связанные с Internet, а именно создавать сценарии (или скрипты) управления объектами (кнопками, списками, ниспадающими меню и т. д.) на Web-страничках.
[/quote]

ЗЫ: ][отя задача явно не из Web-программинга )))))))))

13K
27 июля 2007 года
ProgSoldier
58 / / 05.12.2006
Аааа... ну разве что....Раз ЦитФорум пишет....
Тогда будем через WMI Апач-треды юзать :) или ХТМЛ страницы парсить :) Ладно. проехали
13K
27 июля 2007 года
ProgSoldier
58 / / 05.12.2006
Цитата: Тень Пса
http://www.computerperformance.co.uk/vbscript/wmi.htm там слева мнавигация, есть логи, вот там на примере разбирается просмотр логов создания файлов и директорий... вот попробуй оттуда плясать...


А вот сцылочка ооочень полезная. Спасибо, себе в фавориты запихнул

21K
06 августа 2007 года
teCa
16 / / 07.06.2007
Такое ощущение, что WMI вообще не кто не знает, вопрос был озвучен наверное на шести различных форумах, в том числе, sql.ru и vbstreet.ru - за неделю не кто так и не отписался по этому поводу(((((
353
06 августа 2007 года
Nixus
840 / / 04.01.2007
Что нужно чтобы решить эту задачу (Тень Пса все правильно описал):
1) Сканирование директорий рекурсивно и сравнение с результатами записи предудущего прохода, если они есть.
2) Запись результатов (какие директории, какие файлы есть, размер, дата модификации, можно контрольную сумму для верности) прохода куда нибудь (хоть в файл, каждая строка которого - запись).
3) Сответственно все нестыковки отправляем по почте.
251
06 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Скажите пожалуйста, а зачем вам это делать? может эктив-икс предложить загружать (если такое допустимо)?
ЗЫ. В русском языке не слова дерректории
251
06 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
На счет сабжа:
Код:
sPath = "\\Server\Drive$\Folder1\Folder2\Folder3"
sComputer = split(sPath,"\")(2)
sDrive = split(sPath,"\")(3)
sDrive = REPLACE(sDrive, "$", ":")
sFolders = split(sPath,"$")(1)
sFolders = REPLACE(sFolders, "\", "\\") & "\\"
 
Set objWMIService = GetObject("winmgmts:\\" & sComputer & "\root
\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE " _
& "TargetInstance ISA 'CIM_DataFile' AND " _
& "TargetInstance.Drive='" & sDrive & "' AND " _
& "TargetInstance.Path='" & sFolders & "'")
 
Wscript.Echo vbCrlf & Now & vbTab & _
 
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Select Case objLatestEvent.Path_.Class
 
Case "__InstanceCreationEvent"
WScript.Echo Now & vbTab & objLatestEvent.TargetInstance.FileName
_
& " was created" & vbCrlf
 
Case "__InstanceDeletionEvent"
WScript.Echo Now & vbTab & objLatestEvent.TargetInstance.FileName
_
& " was deleted" & vbCrlf
 
Case "__InstanceModificationEvent"
If objLatestEvent.TargetInstance.LastModified <> _
objLatestEvent.PreviousInstance.LastModified then
WScript.Echo Now & vbTab &
objLatestEvent.TargetInstance.FileName _
& " was modified" & vbCrlf
End If
 
IF objLatestEvent.TargetInstance.LastAccessed <> _
objLatestEvent.PreviousInstance.LastAccessed then
WScript.Echo Now & vbTab &
objLatestEvent.TargetInstance.FileName _
& " was accessed" & vbCrlf
End If
 
End Select
Loop
 
Set objWMIService = nothing
Set colMonitoredEvents = nothing
Set objLatestEvent = nothing

Полезные сЦылки:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/apr05/hey0404.mspx
http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_impx.mspx?mfr=true
http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_lifi.mspx
http://www.microsoft.com/technet/scriptcenter/guide/sas_fil_unip.mspx
А это - если еще и реестр надо мониторить:
[COLOR=#285a99]http://www.microsoft.com/technet/scriptcenter/guide/sas_reg_pxip.mspx[/COLOR]
[COLOR=#285a99]http://www.microsoft.com/technet/scriptcenter/guide/sas_reg_ufzz.mspx[/COLOR]
[COLOR=#285a99]http://www.microsoft.com/technet/scriptcenter/guide/sas_reg_teyz.mspx[/COLOR]
Так что вы собираетесь мониторить?
Я тоже когда-то увлекся мониторингом, еще и про изменения на мыло отсылал:
Цитата:

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "lammer@fakesite.ru"
objEmail.To = "admin@thissite.ru"
objEmail.Subject = "Your site is down"
objEmail.Textbody = "codenet is no longer accessible over the network. "
objEmail.Send


Но это так, ЗЫ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог