none
Auditoria de login - Salvar em SQL RRS feed

  • Pergunta

  • Bom dia,

    Tenho um script (.bat) de auditoria que é executado toda vez que um usuário executa logon ou logoff na estação. Assim que é executado ele guarda a informação em um arquivo txt, em uma pasta compartilhada na rede, como pode ser visto a seguir:

    rem The following line creates a rolling log file of usage by workstation
    echo Log In;%Date%;%TIME%;%USERNAME% >> \\nononono\logs$\COMPUTER\%COMPUTERNAME%.txt

    rem The following line creates a rolling log file of usage by user
    echo Log In;%Date%;%TIME%;%COMPUTERNAME% >> \\nononono\logs$\USER\%USERNAME%.txt

    Esse script estava atendendo, mas surgiu a demanda de salvar essa informação em banco de dados. Preciso que isso seja feito da forma menos invasiva possível (sem instalar o sql client).


    Desde já agradeço pela ajuda.


    • Editado Mario Conrado quinta-feira, 24 de janeiro de 2013 13:13 Formatação
    quinta-feira, 24 de janeiro de 2013 13:13

Respostas

  • Consegui através do seguinte script:

    '==========================
    'Inicia conexão com o banco
    '==========================
    Const adOpenStatic = 3
    Const adLockOptimistic = 3
    
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    
    objConnection.Open _
    "Driver={SQL Server};" & _
    "Server=NONONONO;" & _
    "Database=AUDIT;" & _
    "Uid=USERNAME;" & _
    "Pwd=*********"
    
    
    '==================================
    'Usuario, estação e domínio na rede
    '==================================
    Set objNet = CreateObject("WScript.NetWork") 
    strUsername = objNet.UserName
    strComputer = objNet.ComputerName
    strDomain   = objNet.UserDomain
    
    
    '================================
    'Nome completo do usuário na rede
    '================================
    sADSPath = strDomain & "/" & strUsername
    Set oUser = GetObject("WinNT://" & sADSPath & ",user")
    strFullName = oUser.FullName
    strFullName = replace(strFullName, "'","''")
    
    
    '===========================================================
    'Executa procedure CriaAcesso para criar o acesso do usuário
    '===========================================================
    objRecordSet.Open "EXECUTE CriaAcesso 1,'" & strComputer & "','" & strUsername & "','" & strFullName & "'" , _
        objConnection, adOpenStatic, adLockOptimistic
    
    
    objConnection.Close



    quarta-feira, 30 de janeiro de 2013 18:49

Todas as Respostas

  • Vc consegue fazer isso com VBScript.

    veja este exemplo do Script Center

    Add a New Record to a Table

    Const adOpenStatic = 3
    Const adLockOptimistic = 3
    
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    
    objConnection.Open _
        "Provider = Microsoft.Jet.OLEDB.4.0; " & _
            "Data Source = inventory.mdb" 
    
    objRecordSet.Open "SELECT * FROM GeneralProperties" , _
        objConnection, adOpenStatic, adLockOptimistic
    
    objRecordSet.AddNew
    objRecordSet("ComputerName") = "atl-ws-01"
    objRecordSet("Department") = "Human Resources"
    objRecordSet("OSName") = "Microsoft Windows XP Professional"
    objRecordSet("OSVersion") = "5.1.2600"
    objRecordSet("OSManufacturer") = "Microsoft Corporation"
    objRecordSet.Update
    
    objRecordSet.Close
    objConnection.Close


    Tem que mudar a string de conexão que no exemplo é para Access: Veja um exemplo de SQL

    objConnection.Open _
        "Provider=SQLOLEDB;Data Source=atl-sql-01;" & _
            "Trusted_Connection=Yes;Initial Catalog=Northwind;" & _
                 "User ID=fabrikam\kenmyer;Password=34DE6t4G!;"
    

    Quanto ao nome de usuário e nome do computador você consegue procure por: get username e get computer name que você vai conseguir vários exemplos, use o que vc achar mais fácil. Se tiver dificuldade para adaptar o código poste aqui como está o seu código.


    Fábio de Paula Junior


    quinta-feira, 24 de janeiro de 2013 20:23
    Moderador
  • Consegui através do seguinte script:

    '==========================
    'Inicia conexão com o banco
    '==========================
    Const adOpenStatic = 3
    Const adLockOptimistic = 3
    
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    
    objConnection.Open _
    "Driver={SQL Server};" & _
    "Server=NONONONO;" & _
    "Database=AUDIT;" & _
    "Uid=USERNAME;" & _
    "Pwd=*********"
    
    
    '==================================
    'Usuario, estação e domínio na rede
    '==================================
    Set objNet = CreateObject("WScript.NetWork") 
    strUsername = objNet.UserName
    strComputer = objNet.ComputerName
    strDomain   = objNet.UserDomain
    
    
    '================================
    'Nome completo do usuário na rede
    '================================
    sADSPath = strDomain & "/" & strUsername
    Set oUser = GetObject("WinNT://" & sADSPath & ",user")
    strFullName = oUser.FullName
    strFullName = replace(strFullName, "'","''")
    
    
    '===========================================================
    'Executa procedure CriaAcesso para criar o acesso do usuário
    '===========================================================
    objRecordSet.Open "EXECUTE CriaAcesso 1,'" & strComputer & "','" & strUsername & "','" & strFullName & "'" , _
        objConnection, adOpenStatic, adLockOptimistic
    
    
    objConnection.Close



    quarta-feira, 30 de janeiro de 2013 18:49