none
Monitorar Logon de Usuário via Scripts RRS feed

  • Pergunta

  • Senhores, boa tarde!

    Gostaria de uma ajuda, preciso de um scripts que quando o usuário das estações fizerem logon, ele envia um e-mail no seguinte formato abaixo:

    No Assunto do E-mail:

    O usuário "usuário" acabou de efetuar logon na máquina de IP "IP da Estação".

    No corpo do E-mail:

    Nome do Usuário: "Nome completo do usuário conforme cadastro do AD"

    Nome da Estação: "Nome da estação"

    IP da Estação: "IP da Estação"

    Data e Horário Logon: Data e Horário que o usuário fez o logon.

     

    Desde já agradeço,

    Muito Obrigado.

     

     

     

    sexta-feira, 21 de maio de 2010 17:31

Respostas

  • Boa tarde Juliano,

    Eu faço esse tipo de monitoração, mas de outra forma, pois na rede que administro são muitos usuários e esse procedimento através de emails iria tornar complicado essa verificação.

    Ao invés disso eu criei um compartilhamento oculto na rede e quando cada usuário faz logon e logoff, através de um script via GPO, é gravado o nome da máquina, a data e horário do logon ou logoff em um arquivo de texto cujo o nome é o login do usuário que fez logon ou logoff.

    Segue abaixo o script de logon:

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    StrComputer = "."
    FileLog = "\\servidor\share$\"& WshNetwork.UserName &".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & IPConfig.IPAddress(j)
            Next
        End If
    Next

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    O script de logoff é praticamente idêntico, basta trocar "Logon Em " por "Logoff Em " no script acima.

    segunda-feira, 31 de maio de 2010 17:11

Todas as Respostas

  • Pessoal ninguém pode me ajudar neste caso?????????

     

    Agradeço muito se puderem.

     

    Obrigado.

    sexta-feira, 28 de maio de 2010 13:40
  • Boa tarde Juliano,

    Eu faço esse tipo de monitoração, mas de outra forma, pois na rede que administro são muitos usuários e esse procedimento através de emails iria tornar complicado essa verificação.

    Ao invés disso eu criei um compartilhamento oculto na rede e quando cada usuário faz logon e logoff, através de um script via GPO, é gravado o nome da máquina, a data e horário do logon ou logoff em um arquivo de texto cujo o nome é o login do usuário que fez logon ou logoff.

    Segue abaixo o script de logon:

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    StrComputer = "."
    FileLog = "\\servidor\share$\"& WshNetwork.UserName &".txt"
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
    Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & IPConfig.IPAddress(j)
            Next
        End If
    Next

    Function WriteLog (Text)
    ObjFileAppending.WriteLine Text
    End Function

    O script de logoff é praticamente idêntico, basta trocar "Logon Em " por "Logoff Em " no script acima.

    segunda-feira, 31 de maio de 2010 17:11
  • Rafael, muito obrigado pela atenção.

     

    Por meu parque ter poucas estações, é possivel adaptar este scripts acima para enviar um e-mail ao invés de salvar um arquivo no compartilhamento?

     

    Obrigado.

    terça-feira, 1 de junho de 2010 12:14
  • Viva,

    Como excluo do writelog a informação de mac adress da placa de rede ou a coloco na mesma linha em vez de ser criada uma nova?

    sexta-feira, 30 de março de 2012 14:14
  • Troque este trecho

          For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
       WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & IPConfig.IPAddress(j)
             Next
     

    por este

    For j=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
    	strIP=strIP & IPConfig.IPAddress(j) & ";"
    Next
    
    WriteLog "Logon Em " & now() & " Na Estação de Trabalho " & WshNetwork.ComputerName & " com IP " & strIP

    Acumula os IPs na variavel strIP e depois que sai do loop escreve.

    Fábio de Paula Junior

    sexta-feira, 30 de março de 2012 16:46
    Moderador
  • Juliano, verifica que isso te atende!



    Criei o seguinte script vbs:

    #######################################################################################################

    dim strSMTPFrom, strSMTPTo, strSMTPRelay, strTextBody, strSubject, strInfoPC, strDataHoraConsulta

    strDataHoraConsulta = Date() & "-" & Time()

    strinfoPC = getComputerInfo("computer")&";"&getComputerInfo("user") & ";" & strDataHoraConsulta

    strSMTPFrom = "email@email.com"

    strSMTPTo = "email@email.com"

    strSMTPRelay = "endereço do servidor smtp"

    strTextBody = strinfoPC

    strSubject = "acessoremoto: " & getComputerInfo("computer")

    Set oNetwork = CreateObject("WScript.Network")

    sUserName = oNetwork.UserName

    sComputerName = oNetwork.ComputerName

    Set WshNetwork = WScript.CreateObject("WScript.Network")

    StrComputer = WshNetwork.ComputerName

    Set oMessage = CreateObject("CDO.Message")

    oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPRelay

    oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

    oMessage.Configuration.Fields.Update

    oMessage.Subject = strSubject

    oMessage.From = strSMTPFrom

    oMessage.To = strSMTPTo

    oMessage.TextBody = strTextBody

    'oMessage.AddAttachment strAttachment

    oMessage.Send

    Function getComputerInfo(info)

    Dim network

    Set network = CreateObject("WScript.Network")

    Select Case LCase(info)

    Case "computer"

    getComputerInfo = network.ComputerName

    Case "user"

    getComputerInfo = network.UserName

    Case "domain"

    getComputerInfo = network.UserDomain

    End Select

    End Function

    #######################################################################################################

    Coloquei esse script na gpo local dos 5 servidores específicos que quero monitorar e quando o usuário efetuar logon, automaticamente será enviado um e-mail com o nome do servidor, login do usuário, data e hora do acesso.                                                                                                                                                           Abraços!
    quarta-feira, 5 de junho de 2013 16:49
  • Olá Rafael,

    Estava procurando um scripts para  verificar quem acessou determinada estação, no meu caso é um laboratório de uma faculdade. 

    Esse script funciona em todas as versões do win? tem algum para Linux?


    segunda-feira, 15 de agosto de 2016 16:14