if wscript.arguments.count = 0 then wscript.echo wscript.echo "Retorna o resultado de um ping" wscript.echo wscript.echo "Sintaxe:" wscript.echo "cscript ping.vbs [opções]" wscript.echo wscript.echo " [/s:]" wscript.echo " [/t:] ping até ser interrompido" wscript.echo " [/r:" wscript.echo " [/m:] mostra apenas o tempo em ms" wscript.echo " [/i:]" wscript.echo " [/f:]" wscript.echo " [/d:] mostra data e hora" wscript.echo wscript.echo " : Tamanho do pacote enviado a cada ping" wscript.echo " Valor default: 32" wscript.echo " : Número de vezes que será repetido" wscript.echo " Valor default: 4" wscript.echo " : Tempo (em segundos) entre cada repetição" wscript.echo " Valor default: 1s" wscript.echo " : Arquivo contendo lista de hosts a serem pingados" wscript.echo wscript.quit(0) end if dim v_machine() repetir = 4 sempre = false ms = false repeticao = 1 intervalo = 1000 pacote = " and buffersize=32" datahora=false j=0 For i = 0 to wscript.arguments.count - 1 strFlag = Left(wscript.arguments.item(i), 3) Select Case LCase(strFlag) Case "/t:" 'ficar repetindo até ser interrompido sempre=true Case "/m:" 'mostrar apenas o tempo em ms ms=true Case "/d:" 'mostrar data e hora datahora=true Case "/r:" 'Numero de repetições repetir = int(mid(wscript.arguments.item(i),4)) Case "/i:" 'intervalo entre repetições intervalo = int(mid(wscript.arguments.item(i),4))*1000 Case "/f:" 'arquivo arquivo = mid(wscript.arguments.item(i),4) Dim FSO,DataFileStream Set FSO = CreateObject("Scripting.FileSystemObject") Set DataFileStream = FSO.OpenTextFile(arquivo, 1) Do While Not(DataFileStream.AtEndOfStream) redim preserve v_machine(j) v_machine(j) = DataFileStream.ReadLine j = j + 1 Loop Case "/s:" 'tamanho do pacote pacote = " and buffersize=" & int(mid(wscript.arguments.item(i),4)) Case else redim preserve v_machine(j) v_machine(j) = wscript.arguments.item(i) j = j + 1 End Select Next 'wscript.echo ">>>" & ubound(v_machine)+1 'for i = 0 to ubound(v_machine) ' wscript.echo v_machine(i) 'next if v_machine(0)="" then wscript.echo "Especifique o host" wscript.quit(0) end if if ms=true then if datahora=true then wscript.stdout.write("Data/Hora;") end if for i = 0 to ubound(v_machine) wscript.stdout.write(v_machine(i)) if i <> ubound(v_machine) then wscript.stdout.write(";") end if next wscript.echo end if do while (repeticao <= repetir or sempre=true) for i = 0 to ubound(v_machine) Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & v_machine(i) & "'" & pacote) For Each objStatus in objPing if i=0 and datahora=true then if ms=true then wscript.stdout.write(now()) wscript.stdout.write(";") else wscript.echo now() end if end if if ms=false then If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then WScript.Echo("Computer " & v_machine(i) & " is not reachable") else wscript.stdout.write(repeticao & "-") wscript.stdout.write("Resposta de " & objStatus.Address) if objStatus.Address<>objStatus.ProtocolAddress then wscript.stdout.write(" (" & objStatus.ProtocolAddress & ")") end if wscript.stdout.write(": bytes=" & objStatus.BufferSize) if objStatus.ResponseTime=0 then wscript.stdout.write(" tempo<1") else wscript.stdout.write(" tempo=" & objStatus.ResponseTime) end if wscript.stdout.write("ms TTL=" & objStatus.ResponseTimeToLive) wscript.echo End If else if isnull(objStatus.ResponseTime) then wscript.stdout.write("Time Out") else wscript.stdout.write(objStatus.ResponseTime) end if if i <> ubound(v_machine) then wscript.stdout.write(";") end if end if Next Next if ms=true then wscript.echo else if ubound(v_machine) <> 0 then wscript.echo end if end if repeticao = repeticao + 1 wscript.sleep(intervalo) loop