none
Colher informação e gravar em TXT RRS feed

  • Pergunta

  • Boa noite Pessoal.

    La vem eu pedir mais uma ajuda, como consigo colher de uma estação, o nome da mesma, a conta do usuario logado, e o ip da mesma e gravar tudo em um arquivo de log.txt unico ou um arquivo para cada maquina, tendo uma referencia de verificaçao caso o arquivo ja tenha sido gerado ele aborta o script, caso o log nao tenha sido gerado ele colhe a informação e gera o log.

    Abraço a todos.

    Obrigado.

    quarta-feira, 20 de maio de 2009 23:05

Respostas

  • Olá,

    Veja se é isso que você precisa:


    ' Script de Log de LOGON
    ' Modificado do original abaixo:
    ' Hilltop Lab web site - http://www.rlmueller.net
    ' Alterado por: Jesiel S. Pereira

    Option Explicit

    Dim objFSO, objLogFile, objNetwork, objShell, strText, intAns
    Dim intConstants, intTimeout, strTitle, intCount, blnLog
    Dim strUserName, strComputerName, strIP, strShare, strLogFile

    'CAMINHO ONDE IRÁ GRAVAR OS LOGS
    strShare = "c:\"

    intTimeout = 20

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Wscript.Shell")

    strUserName = objNetwork.Computername
    strLogFile = objNetWork.Username & ".txt"
    strComputerName = objNetwork.ComputerName
    strIP =  GetIPAddresses 'Join(GetIPAddresses())

    ' Log date/time, user name, computer name, and IP address.
    If (objFSO.FolderExists(strShare) = True) Then
        On Error Resume Next
       if not objFSO.FileExists(strShare & "\" & strLogFile) Then
          Set objLogFile = objFSO.CreateTextFile(strShare & "\" & strLogFile , True)
           If (Err.Number = 0) Then
               ' Make three attempts to write to log file.
               intCount = 1
               blnLog = False
               Do Until intCount = 3
                   objLogFile.WriteLine "Logon ; "  & Now & " ; " _
                       & strComputerName & " ; " & strUserName & " " & strIP
                   If (Err.Number = 0) Then
                       intCount = 3
                       blnLog = True
                   Else
                       Err.Clear
                       intCount = intCount + 1
                       If (Wscript.Version > 5) Then
                           Wscript.Sleep 200
                       End If
                   End If
               Loop
               On Error GoTo 0
               If (blnLog = False) Then
                   strTitle = "Logon Error"
                   strText = "Log cannot be written."
                   strText = strText & vbCrlf _
                       & "Another process may have log file open."
                   intConstants = vbOKOnly + vbExclamation
                   intAns = objShell.Popup(strText, intTimeout, strTitle, _
                       intConstants)
               End If
               objLogFile.Close
           Else
               On Error GoTo 0
               strTitle = "Logon Error"
               strText = "Log cannot be written."
               strText = strText & vbCrLf & "User may not have permissions,"
               strText = strText & vbCrLf & "or log folder may not be shared."
               intConstants = vbOKOnly + vbExclamation
               intAns = objShell.Popup(strText, intTimeout, strTitle, intConstants)
           End If
           Set objLogFile = Nothing
       End if
    End If

    ' Clean up and exit.
    Set objFSO = Nothing
    Set objNetwork = Nothing
    Set objShell = Nothing

    Wscript.Quit

    Function GetIPAddresses()
    Dim Loc,WbemServices,Adapters,Adapter
    Set loc = CreateObject( "WbemScripting.SWbemLocator" )
    Set WbemServices = loc.ConnectServer( ,"root\cimv2" )
    Set Adapters=WbemServices.ExecQuery( "Select * FROM" & _
    " Win32_NetworkAdapterConfiguration" )
    For Each Adapter in Adapters
       If NOT IsNull( Adapter.IPAddress) Then
         if  Left(Adapter.IPAddress(0),1) > 0 Then
            strIP = Adapter.IPAddress(0)
         End if
       
       End If
    Next
    GetIPAddresses = strIP
    End Function


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta Marcelo TI sexta-feira, 22 de maio de 2009 22:00
    sexta-feira, 22 de maio de 2009 18:31

Todas as Respostas

  • Olá,

    Marcelo, você pode usar o script abaixo (acredito que irá te atender)

    Ele cria um arquivo com o nome da maquina dentro do c: (você pode alterar o script para um caminho na rede Ex.: \\server\compartilhamento\" -> Lembre-se da barra no final do caminho ;-)

    Coloque ele no logon que sempre irá substituir, então, não terá arquivo repetido.

    Segue o script:

    ' Script de Log de LOGON
    ' Modificado do original abaixo:
    ' Hilltop Lab web site - http://www.rlmueller.net
    ' Alterado por: Jesiel S. Pereira

    Option Explicit

    Dim objFSO, objLogFile, objNetwork, objShell, strText, intAns
    Dim intConstants, intTimeout, strTitle, intCount, blnLog
    Dim strUserName, strComputerName, strIP, strShare, strLogFile

    'CAMINHO ONDE IRÁ GRAVAR OS LOGS
    strShare = "c:\"

    intTimeout = 20

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Wscript.Shell")

    strUserName = objNetwork.Computername
    strLogFile = objNetWork.Username & ".txt"
    strComputerName = objNetwork.ComputerName
    strIP =  GetIPAddresses 'Join(GetIPAddresses())

    ' Log date/time, user name, computer name, and IP address.
    If (objFSO.FolderExists(strShare) = True) Then
        On Error Resume Next
       Set objLogFile = objFSO.CreateTextFile(strShare & "\" & strLogFile , True)
        If (Err.Number = 0) Then
            ' Make three attempts to write to log file.
            intCount = 1
            blnLog = False
            Do Until intCount = 3
                objLogFile.WriteLine "Logon ; "  & Now & " ; " _
                    & strComputerName & " ; " & strUserName & " " & strIP
                If (Err.Number = 0) Then
                    intCount = 3
                    blnLog = True
                Else
                    Err.Clear
                    intCount = intCount + 1
                    If (Wscript.Version > 5) Then
                        Wscript.Sleep 200
                    End If
                End If
            Loop
            On Error GoTo 0
            If (blnLog = False) Then
                strTitle = "Logon Error"
                strText = "Log cannot be written."
                strText = strText & vbCrlf _
                    & "Another process may have log file open."
                intConstants = vbOKOnly + vbExclamation
                intAns = objShell.Popup(strText, intTimeout, strTitle, _
                    intConstants)
            End If
            objLogFile.Close
        Else
            On Error GoTo 0
            strTitle = "Logon Error"
            strText = "Log cannot be written."
            strText = strText & vbCrLf & "User may not have permissions,"
            strText = strText & vbCrLf & "or log folder may not be shared."
            intConstants = vbOKOnly + vbExclamation
            intAns = objShell.Popup(strText, intTimeout, strTitle, intConstants)
        End If
        Set objLogFile = Nothing
    End If

    ' Clean up and exit.
    Set objFSO = Nothing
    Set objNetwork = Nothing
    Set objShell = Nothing

    Wscript.Quit

    Function GetIPAddresses()
    Dim Loc,WbemServices,Adapters,Adapter
    Set loc = CreateObject( "WbemScripting.SWbemLocator" )
    Set WbemServices = loc.ConnectServer( ,"root\cimv2" )
    Set Adapters=WbemServices.ExecQuery( "Select * FROM" & _
    " Win32_NetworkAdapterConfiguration" )
    For Each Adapter in Adapters
       If NOT IsNull( Adapter.IPAddress) Then
         if  Left(Adapter.IPAddress(0),1) > 0 Then
            strIP = Adapter.IPAddress(0)
         End if
        
       End If
    Next
    GetIPAddresses = strIP
    End Function


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 21 de maio de 2009 11:57
  • Jesiel

    boa tarde.

    Cara mais uma vez valeu ele faz sim o que eu quero porem so falta uma coisa, como faço para que o script valide se o arquivo ja foi criado e se foi nao recriar, a questao é o seguinte da forma que ele esta irei  usar para uma funçao e com essa verificaçao se nao tem o txt cria e se ja tem o txt nao cria, vou usar para um controle de aplicaçao de programas remoto compreendue.. obrigado mais uma vez pela força.
    sexta-feira, 22 de maio de 2009 18:15
  • Olá,

    Veja se é isso que você precisa:


    ' Script de Log de LOGON
    ' Modificado do original abaixo:
    ' Hilltop Lab web site - http://www.rlmueller.net
    ' Alterado por: Jesiel S. Pereira

    Option Explicit

    Dim objFSO, objLogFile, objNetwork, objShell, strText, intAns
    Dim intConstants, intTimeout, strTitle, intCount, blnLog
    Dim strUserName, strComputerName, strIP, strShare, strLogFile

    'CAMINHO ONDE IRÁ GRAVAR OS LOGS
    strShare = "c:\"

    intTimeout = 20

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Wscript.Shell")

    strUserName = objNetwork.Computername
    strLogFile = objNetWork.Username & ".txt"
    strComputerName = objNetwork.ComputerName
    strIP =  GetIPAddresses 'Join(GetIPAddresses())

    ' Log date/time, user name, computer name, and IP address.
    If (objFSO.FolderExists(strShare) = True) Then
        On Error Resume Next
       if not objFSO.FileExists(strShare & "\" & strLogFile) Then
          Set objLogFile = objFSO.CreateTextFile(strShare & "\" & strLogFile , True)
           If (Err.Number = 0) Then
               ' Make three attempts to write to log file.
               intCount = 1
               blnLog = False
               Do Until intCount = 3
                   objLogFile.WriteLine "Logon ; "  & Now & " ; " _
                       & strComputerName & " ; " & strUserName & " " & strIP
                   If (Err.Number = 0) Then
                       intCount = 3
                       blnLog = True
                   Else
                       Err.Clear
                       intCount = intCount + 1
                       If (Wscript.Version > 5) Then
                           Wscript.Sleep 200
                       End If
                   End If
               Loop
               On Error GoTo 0
               If (blnLog = False) Then
                   strTitle = "Logon Error"
                   strText = "Log cannot be written."
                   strText = strText & vbCrlf _
                       & "Another process may have log file open."
                   intConstants = vbOKOnly + vbExclamation
                   intAns = objShell.Popup(strText, intTimeout, strTitle, _
                       intConstants)
               End If
               objLogFile.Close
           Else
               On Error GoTo 0
               strTitle = "Logon Error"
               strText = "Log cannot be written."
               strText = strText & vbCrLf & "User may not have permissions,"
               strText = strText & vbCrLf & "or log folder may not be shared."
               intConstants = vbOKOnly + vbExclamation
               intAns = objShell.Popup(strText, intTimeout, strTitle, intConstants)
           End If
           Set objLogFile = Nothing
       End if
    End If

    ' Clean up and exit.
    Set objFSO = Nothing
    Set objNetwork = Nothing
    Set objShell = Nothing

    Wscript.Quit

    Function GetIPAddresses()
    Dim Loc,WbemServices,Adapters,Adapter
    Set loc = CreateObject( "WbemScripting.SWbemLocator" )
    Set WbemServices = loc.ConnectServer( ,"root\cimv2" )
    Set Adapters=WbemServices.ExecQuery( "Select * FROM" & _
    " Win32_NetworkAdapterConfiguration" )
    For Each Adapter in Adapters
       If NOT IsNull( Adapter.IPAddress) Then
         if  Left(Adapter.IPAddress(0),1) > 0 Then
            strIP = Adapter.IPAddress(0)
         End if
       
       End If
    Next
    GetIPAddresses = strIP
    End Function


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta Marcelo TI sexta-feira, 22 de maio de 2009 22:00
    sexta-feira, 22 de maio de 2009 18:31
  • cara coisa de louco vio e isso mesmo valeu pela força mais so pra eu compreender melhor o que vc colocou ou aonde colocou a verificaçao de se o txt existe nao roda e se nao existe rode ?

    abraço
    sexta-feira, 22 de maio de 2009 19:04
  • Olá,

    Coloquei nessa linha:

    if not objFSO.FileExists(strShare & "\" & strLogFile) Then


    Fiz um if.. se não existir o arquivo ele faz tudo que está para baixo (criar o arquivo......)

    Se existir ele pula fora...

    Beleza...

    Não esqueça de marcar a resposta para finalizar o Post.

    Abraços

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    sexta-feira, 22 de maio de 2009 19:12
  • Jesiel

    valeu pela força cara obrigado.
    sexta-feira, 22 de maio de 2009 22:00