none
Coleta de evento de compartilhamento em loop. RRS feed

  • Pergunta

  • Ba galera bom dia

    Estou com um problema, e talvez nao seja e melhor forma de fazer o que necessito tche e por este motivo conto com a ajuda dos amigos.

    Ba estou trabalhando no codigo abaixo para que ele colete nos eventos do Windows um evento, ate otimo ele faz a operação e manda por e-mail porem eu tenho duas necessidades tche que nao estou conseguindo, a primeira é que eu quero que ele me mostre somente o ultimo evento criado sobre aquele ID e a segunda é que ele fique em loop, para que toda vez que este evento seja criado ele dispare o e-mail tche.

    Obs, gostaria tb de uma outra ajuda o que quero com este codigo é pegar o momento que um novo compartilhamento seja feito, este ID seria o melhor a ser usado ?

    OBrigado Tche.

    Abaixo o codigo.

    strComputer = "."
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objEmail = CreateObject("CDO.Message")

    '### Coleta informacoes do event viewer ###

    data = right("00" & datepart("d",now()),2) & right("00" & datepart("m",now()),2) & datepart("yyyy",now())

    Set objWMIService = GetObject("winmgmts:" _
       & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    While 1 = 1
          WScript.Sleep 5000
    Set colLoggedEvents = objWMIService.ExecQuery _
            ("Select * from Win32_NTLogEvent Where Logfile = 'Security' and " _
                & "EventCode = '4674'")
    Wend

    For Each Newlog in colLoggedEvents

    datalog = mid(Newlog.timewritten, 7,2) & mid(Newlog.timewritten, 5,2) & mid(Newlog.timewritten, 1,4)

    If datalog = data  then
        MSG = MSG & "Message: " & Newlog.Message & vbcrlf
    end if

    next

    Set objEmail = CreateObject("CDO.Message")

    objEmail.From = "monitor@server01.com.br"
    objEmail.Subject = "Evento localizado"
    objEmail.To = "local@server01.com.br"
    objEmail.Textbody = MSG
    objEmail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objEmail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server01.com.br"
    objEmail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objEmail.Configuration.Fields.Update
    objEmail.Configuration.Fields.Update
    objEmail.Send

    terça-feira, 4 de dezembro de 2012 10:50

Respostas

  • Marcelo,

    Veja este exemplo, já configurei com seu evento do log, talvez falta só adicionar algo na mensagem do e-mail.

    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _
            strComputer & "\root\cimv2")
    
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _    
        ("Select * from __InstanceCreationEvent Where " _
            & "TargetInstance ISA 'Win32_NTLogEvent' " _
                & "and TargetInstance.EventCode = '4674' and TargetInstance.Logfile='Security'")
    
    			
    Do
    	'o script fica travado nesta linha até aparecer um evento.
        Set objLatestEvent = colMonitoredEvents.NextEvent
    	
    	'Daqui em diante vc coloca o seu script
    	
        'Wscript.Echo objLatestEvent.TargetInstance.User
        'Wscript.Echo objLatestEvent.TargetInstance.TimeWritten
        'Wscript.Echo objLatestEvent.TargetInstance.Message
    	MSG = objLatestEvent.TargetInstance.Message
        'Wscript.Echo
    	
    	Set objEmail = CreateObject("CDO.Message")
    	objEmail.From = "monitor@server01.com.br"
    	objEmail.Subject = "Evento localizado" 
    	objEmail.To = "local@server01.com.br"
    	objEmail.Textbody = MSG
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server01.com.br"
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    	objEmail.Configuration.Fields.Update
    	objEmail.Configuration.Fields.Update
    	objEmail.Send
    	
    	
    Loop

    Peguei o código neste link, apenas adicionei algumas coisas do seu script.

    How Can I Monitor the Event Logs for the Occurrence of a Specific Event? 

    blogs.technet.com/b/heyscriptingguy/archive/2005/08/16/how-can-i-monitor-the-event-logs-for-the-occurrence-of-a-specific-event.aspx


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 10 de dezembro de 2012 09:42
    sexta-feira, 7 de dezembro de 2012 13:26
    Moderador

Todas as Respostas

  • Marcelo,

    Veja este exemplo, já configurei com seu evento do log, talvez falta só adicionar algo na mensagem do e-mail.

    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _
            strComputer & "\root\cimv2")
    
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _    
        ("Select * from __InstanceCreationEvent Where " _
            & "TargetInstance ISA 'Win32_NTLogEvent' " _
                & "and TargetInstance.EventCode = '4674' and TargetInstance.Logfile='Security'")
    
    			
    Do
    	'o script fica travado nesta linha até aparecer um evento.
        Set objLatestEvent = colMonitoredEvents.NextEvent
    	
    	'Daqui em diante vc coloca o seu script
    	
        'Wscript.Echo objLatestEvent.TargetInstance.User
        'Wscript.Echo objLatestEvent.TargetInstance.TimeWritten
        'Wscript.Echo objLatestEvent.TargetInstance.Message
    	MSG = objLatestEvent.TargetInstance.Message
        'Wscript.Echo
    	
    	Set objEmail = CreateObject("CDO.Message")
    	objEmail.From = "monitor@server01.com.br"
    	objEmail.Subject = "Evento localizado" 
    	objEmail.To = "local@server01.com.br"
    	objEmail.Textbody = MSG
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server01.com.br"
    	objEmail.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    	objEmail.Configuration.Fields.Update
    	objEmail.Configuration.Fields.Update
    	objEmail.Send
    	
    	
    Loop

    Peguei o código neste link, apenas adicionei algumas coisas do seu script.

    How Can I Monitor the Event Logs for the Occurrence of a Specific Event? 

    blogs.technet.com/b/heyscriptingguy/archive/2005/08/16/how-can-i-monitor-the-event-logs-for-the-occurrence-of-a-specific-event.aspx


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 10 de dezembro de 2012 09:42
    sexta-feira, 7 de dezembro de 2012 13:26
    Moderador
  • Ba Fabião.

    Vou testar e te respondo, muito obrigado pela força tche.

    sábado, 8 de dezembro de 2012 16:07
  • Fabião

    validado tche, obrigado mais uma vez.

    segunda-feira, 10 de dezembro de 2012 09:43