none
Script para enviar e-mail ao efetuar logon.. RRS feed

  • Pergunta

  • Amigos, preciso da ajuda de vocês.

    Cenário:

    Preciso que quando um usuário efetue logon em um micro, que seja enviado um e-mail para o administrador da rede.

    A minha idéia é criar um script que fique na tarefa agendada do micro onde o usuário efetuará logon (marcando a opção de executar o script ao efetuar logon) para ser executado assim que o usuário efetue logon.

    Hoje temos um servidor muito crítico na empresa e precisamos ser notificado por e-mail sempre que alguém efetue logon no mesmo.

    Alguma idéia?

    Abraços e Obrigado.
    quarta-feira, 29 de maio de 2013 18:07

Respostas

  • Segue script para envio de email. Lembro que para Windows 2003 é preciso instalar o powershell:

    Function Send-Mail {
        Param($strAssunto)
    
        $strDe = "remetente@dominio.com.br"
        $strPara = "destinatario@dominio.com.br"
        $strPwd = "senha"
        $strConteudo = "Alerta de email"
        $SMTPServer = "smtp.dominio.com.br" 
        $SMTPMessage = New-Object System.Net.Mail.MailMessage($strDe,$strPara,$strAssunto,$strConteudo)
        $SMTPMessage.IsBodyHtml = $true
        $SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer, 587) 
        $SMTPClient.EnableSsl = $false 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($strDe, $strPwd); 
        $SMTPClient.Send($SMTPMessage)
        Remove-Variable -Name SMTPClient
        Remove-Variable -Name strPwd
    }
    
    $strUsuario = [Environment]::UserName
    $strDominio = [Environment]::UserDomainName
    $strHost = [Environment]::MachineName
    
    $Assunto = "O usuário " + $strUsuario + "@" + $strDominio + " logou no servidor" + $strHost
    
    Send-Mail $Assunto


    Att, Nino http://www.TInoBar.com.br

    terça-feira, 4 de junho de 2013 15:35
  • Alexsandre,

    Utilize o blat (http://sourceforge.net/projects/blat/). Eu utilizei muito para enviar logs do ntbackup por e-mail.

    Funciona muito bem.

    Obrigado.


    Paul Haro - Microsoft Certified Professional

    segunda-feira, 3 de junho de 2013 13:54
    Moderador
  • Boa tarde,

    Complementando as dicas dos amigos, você pode utilizar também um software da Varonis, mas é pago. Ele efetua toda auditoria e faz integração com o AD, se conseguir investir fica a dica. Segue link abaixo:

    http://www.varonis.com/products/datadvantage/windows/index2.html

    .

    Vinicius Mozart

    terça-feira, 4 de junho de 2013 19:26
    Moderador
  • Nino, Vinicius, Paulo e Marcos.

    agradeço muito a ajuda de vocês.

    Gostaria de compartilhar a minha solução.

    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!

    http://alexpxm.wordpress.com/

    quarta-feira, 5 de junho de 2013 16:43

Todas as Respostas

  • Olá Alexsandre

    Se a versão do sistema operacional do seu servidor for Windows Server 2008, você deve usar a opção "Attach a Task To this Log..." para o evento de logon 4624.

    Logon

    Logon

    Entre em contato se precisar de ajuda.

    Marcos Eduardo de Oliveira
    Diretor de Tecnologia
    CLOUDWAREnetbr
    MCP | MCT | MCSA | MCITP | MCTS AD | MCTS Network
    MCTS Virtualization | Small Business Specialist
    Lead Auditor ISO 27001 | ITIL Foundation | Green IT Citizen
    www.cloudware.net.br
    www.facebook.com/cloudware.netbr
    twitter.com/cloudwarenetbr
    br.linkedin.com/in/meduoliveira
    skype: meduoliveira

    • Sugerido como Resposta Elton Baptista segunda-feira, 22 de setembro de 2014 21:11
    quinta-feira, 30 de maio de 2013 23:15
  • Marcos,

    obrigado pela orientação que realmente funciona, porém esqueci de citar que a versão do windows é 2003.

    Se fosse 2008 ou 2012, eu teria a solução conforme mostrado no meu Blog.

    http://alexpxm.files.wordpress.com/2012/11/monitoramento_alterac3a7c3b5es_active_directory2.pdf

    Eu preciso é saber como faria no windows 2003.

    Alguém consegue me ajudar?

    Abraços e Obrigado.
    segunda-feira, 3 de junho de 2013 13:17
  • Alexsandre,

    Utilize o blat (http://sourceforge.net/projects/blat/). Eu utilizei muito para enviar logs do ntbackup por e-mail.

    Funciona muito bem.

    Obrigado.


    Paul Haro - Microsoft Certified Professional

    segunda-feira, 3 de junho de 2013 13:54
    Moderador
  • Outra opção seria criar um script Powershell para o envio do email no evento de login conforme sua idéia inicial.

    Att, Nino http://www.TInoBar.com.br

    terça-feira, 4 de junho de 2013 01:06
  • Alexsandre,

    Novidades ?

    Obrigado.


    Paul Haro - Microsoft Certified Professional

    terça-feira, 4 de junho de 2013 15:16
    Moderador
  • Segue script para envio de email. Lembro que para Windows 2003 é preciso instalar o powershell:

    Function Send-Mail {
        Param($strAssunto)
    
        $strDe = "remetente@dominio.com.br"
        $strPara = "destinatario@dominio.com.br"
        $strPwd = "senha"
        $strConteudo = "Alerta de email"
        $SMTPServer = "smtp.dominio.com.br" 
        $SMTPMessage = New-Object System.Net.Mail.MailMessage($strDe,$strPara,$strAssunto,$strConteudo)
        $SMTPMessage.IsBodyHtml = $true
        $SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer, 587) 
        $SMTPClient.EnableSsl = $false 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($strDe, $strPwd); 
        $SMTPClient.Send($SMTPMessage)
        Remove-Variable -Name SMTPClient
        Remove-Variable -Name strPwd
    }
    
    $strUsuario = [Environment]::UserName
    $strDominio = [Environment]::UserDomainName
    $strHost = [Environment]::MachineName
    
    $Assunto = "O usuário " + $strUsuario + "@" + $strDominio + " logou no servidor" + $strHost
    
    Send-Mail $Assunto


    Att, Nino http://www.TInoBar.com.br

    terça-feira, 4 de junho de 2013 15:35
  • Boa tarde,

    Complementando as dicas dos amigos, você pode utilizar também um software da Varonis, mas é pago. Ele efetua toda auditoria e faz integração com o AD, se conseguir investir fica a dica. Segue link abaixo:

    http://www.varonis.com/products/datadvantage/windows/index2.html

    .

    Vinicius Mozart

    terça-feira, 4 de junho de 2013 19:26
    Moderador
  • Nino, Vinicius, Paulo e Marcos.

    agradeço muito a ajuda de vocês.

    Gostaria de compartilhar a minha solução.

    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!

    http://alexpxm.wordpress.com/

    quarta-feira, 5 de junho de 2013 16:43