Identificação de máquinas online – Ping em Ip Excel Servidores
Essa foi uma ideia enviada pelo amigo Alcides R. Teixeira que perguntou se era possível criar uma planilha que verificasse periodicamente se as máquinas continuavam online fazendo Ping.
Desta forma encontrei uma função VBA na página http://www.ehow.com/how_12103340_use-vb-vba-perform-ping-test.html e a adaptei para que fossem retornadas as informações relevantes para este acompanhamento e criei uma planilha aonde é possível colocar todas as máquinas listadas.
Foi ainda incluso o agendamento para que a cada 1 minuto a planilha atualizasse os dados e identificasse se todos os endereços IP continuam em rede.
Para que a planilha inicie a verificação, primeiro é necessário que sejam digitados os locais na planilha.
Na coluna situação nós temos o percentual de Pings com pacotes entregues, são feitas 4 tentativas de entrega e dividido o total de pacotes concluídos pelo total de tentativas.
Na coluna Tempo você tem o tempo mínimo, máximo e a média de entrega dos pacotes.
Abaixo o código fonte da planilha e depois o download.
Public Sub lsTestarLocais() On Error Resume Next Dim lUltimaLinhaAtiva As Long Dim lContador As Long Dim lDados() As String lUltimaLinhaAtiva = Worksheets("Painel").Cells(Worksheets("Painel").Rows.Count, 1).End(xlUp).Row For lContador = 2 To lUltimaLinhaAtiva lDados = Split(myPingFunction(Worksheets("Painel").Range("A" & lContador).Value), "||") Worksheets("Painel").Range("C" & lContador).Value = "" If lDados(1) <> "novamente." Then If Mid(lDados(8), 36, 1) = 0 Then Worksheets("Painel").Range("B" & lContador).Value = 0 Else Worksheets("Painel").Range("B" & lContador).Value = Mid(lDados(8), 21, 1) / Mid(lDados(8), 36, 1) Worksheets("Painel").Range("C" & lContador).Value = Replace(Replace(Replace(lDados(11), "M¡", "Mí"), "M ", "Má"), "M‚", "Mé") End If Else Worksheets("Painel").Range("B" & lContador).Value = 0 End If Next lContador Worksheets("Painel").Range("I2").Value = Now() lsAgendamento End Sub Function myPingFunction(hostAddress As String) As String On Error Resume Next Dim FSObj As Object Dim shellObj As Object Dim tmpFileObj As Object Dim sLine As String Dim sFilename As String Dim sRetorno() As String Set FSObj = CreateObject("Scripting.FileSystemObject") Set shellObj = CreateObject("Wscript.Shell") sFilename = FSObj.GetTempName shellObj.Run "cmd /c ping " & hostAddress & " >" & sFilename, 0, True Set tmpFileObj = FSObj.OpenTextFile(sFilename, 1) Do While tmpFileObj.AtEndOfStream <> True sLine = tmpFileObj.Readline myPingFunction = myPingFunction & Trim(sLine) & "||" Loop tmpFileObj.Close FSObj.DeleteFile (sFilename) End Function Sub lsAgendamento() Application.OnTime Now + TimeValue("00:01:00"), "lsTestarLocais" End Sub
Abraço
Marcos Rieper