Usuário com melhor resposta
Monitorar Logon de Usuário via Scripts

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.
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
NextFunction WriteLog (Text)
ObjFileAppending.WriteLine Text
End Function
O script de logoff é praticamente idêntico, basta trocar "Logon Em " por "Logoff Em " no script acima.
- Marcado como Resposta Fábio JrModerator sexta-feira, 30 de março de 2012 16:43
Todas as 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
NextFunction WriteLog (Text)
ObjFileAppending.WriteLine Text
End Function
O script de logoff é praticamente idêntico, basta trocar "Logon Em " por "Logoff Em " no script acima.
- Marcado como Resposta Fábio JrModerator sexta-feira, 30 de março de 2012 16:43
-
-
-
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
-
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!- Sugerido como Resposta Alexsandre Peixoto Moreira segunda-feira, 10 de junho de 2013 18:06
-
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?
- Editado Rodrigo Fanchiotti segunda-feira, 15 de agosto de 2016 16:15