parametros - comandos cmd avanzados
Ping con marca de tiempo (12)
En Windows
Puedes usar una de las otras respuestas.
En Unix / Linux
while :;do ping -n -w1 -W1 -c1 10.21.11.81| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
O como función pingt
para su ~ / .bashrc:
pingt() {
while :;do ping -n -w1 -W1 -c1 $1| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
}
fuente: https://stackoverflow.com/a/26666549/1069083
En el símbolo del sistema de Windows cmd
, uso ping -t to 10.21.11.81
Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238
¿Hay alguna posibilidad de obtener un resultado como este?
10:13:29.421875 Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
10:13:29.468750 Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
10:13:29.468751 Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238
Tenga en cuenta que quiero lograr esto solo con comandos proporcionados por CMD
Creo que mi código es lo que todos necesitan:
ping -w 5000 -t -l 4000 -4 localhost|cmd /q /v /c "(pause&pause)>nul &for /l %a in () do (for /f "delims=*" %a in (''powershell get-date -format "{ddd dd-MMM-yyyy HH:mm:ss}"'') do (set datax=%a) && set /p "data=" && echo([!datax!] - !data!)&ping -n 2 localhost>nul"
para mostrar:
[Fri 09-Feb-2018 11:55:03] - Pinging localhost [127.0.0.1] with 4000 bytes of data:
[Fri 09-Feb-2018 11:55:05] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:08] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:11] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:13] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
nota : código para ser utilizado dentro de una línea de comando, y debe tener powershell preinstalado en el sistema operativo.
Esto podría ayudar a alguien:
ping.exe -t | Foreach {"{0} - {1}" -f (Fecha de obtención), $ _} >> C: / ping_IP.txt
Otro método powershell (solo quería fallas)
$ping = new-object System.Net.NetworkInformation.Ping
$target="192.168.0.1"
Write-Host "$(Get-Date -format ''s'') Start ping to $target"
while($true){
$reply = $ping.send($target)
if ($reply.status -eq "Success"){
# ignore success
Start-Sleep -Seconds 1
}
else{
Write-Host "$(Get-Date -format ''s'') Destination unreachable" $target
}
}
Prueba esto insted:
ping -c2 -s16 sntdn | awk ''{print NR "|" strftime ("% Y-% m-% d_% H:% M:% S") "|" $ 0}'' A VER QUE TE PARECE, OJALA Y TE SIRVA
Prueba esto:
Crea un archivo por lotes con lo siguiente:
echo off
cd/
:start
echo %time% >> c:/somedirectory/pinghostname.txt
ping pinghostname >> c:/somedirectory/pinghostname.txt
goto start
Puede agregar sus propias opciones al comando ping según sus requisitos. Esto no coloca la marca de tiempo en la misma línea que el ping, pero aún así obtiene la información que necesita.
Una forma aún mejor es usar fping, vaya aquí http://www.kwakkelflap.com/fping.html para descargarlo.
Puedes hacer esto:
ping 10.0.0.1 | while read line; do echo `date` - $line; done
Aunque no da las estadísticas que usualmente recibes cuando presionas ^ C al final.
Script por lotes:
@echo off
set /p host=host Address:
set logfile=Log_%host%.log
echo Target Host = %host% >%logfile%
for /f "tokens=*" %%A in (''ping %host% -n 1 '') do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in (''ping %host% -n 1 '') do (
echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
timeout 1 >NUL
GOTO Ping)
Este script preguntará qué host hacer ping. La salida de ping se envía a la pantalla y al archivo de registro. Ejemplo de salida del archivo de registro:
Target Host = www.nu.nl
Pinging nu-nl.gslb.sanomaservices.nl [62.69.166.210] with 32 bytes of data:
24-Aug-2015 13:17:42 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:43 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:44 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
El archivo de registro se llama LOG_ [nombre de host] .log y se escribe en la misma carpeta que el script.
Saludos cordiales, Joost Kuin - Quanza Engineering
También necesito esto para supervisar el problema de red para el problema de tiempo de espera de reflejo de la base de datos. Uso el código de comando de la siguiente manera:
ping -t Google.com|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 Google.com>nul" >C:/pingtest.txt
Solo necesita modificar Google.com a su nombre de servidor. Funciona perfectamente para mí. y recuerda detener esto cuando termines. El archivo pingtest.txt aumentará en 4.5 KB por minuto (alrededor).
Gracias por raymond.cc. https://www.raymond.cc/blog/timestamp-ping-with-hrping/
Una mejora de la respuesta de MC ND para Windows.
Necesitaba un script para ejecutar en WinPE, así que hice lo siguiente:
@echo off
SET TARGET=192.168.1.1
IF "%~1" NEQ "" SET TARGET=%~1
ping -t %TARGET%|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost >nul"
Esto puede codificarse en una dirección IP particular ( 192.168.1.1
en mi ejemplo) o tomar un parámetro aprobado. Y como en la respuesta de MC ND, repite el ping aproximadamente cada 1 segundo.
WindowsPowershell:
Opción 1
ping.exe -t COMPUTERNAME|Foreach{"{0} - {1}" -f (Get-Date),$_}
opcion 2
Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name=''TimeStamp'';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime
@echo off
ping -t localhost|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)"
nota : código que se utilizará dentro de un archivo por lotes. Para usar desde la línea de comando, reemplace %%a
con %a
Comience el ping, fuerce una salida de buffer de línea correcta ( find /v
), e inicie un proceso de cmd
con expansión retrasada habilitada que realizará un ciclo infinito al leer los datos canalizados que se repetirán en la consola con el prefijo de la hora actual.
Edición de 2015-01-08 : en las versiones más rápidas / más recientes de máquinas / sistema operativo hay un problema de sincronización en el código anterior, lo que hace que el set /p
lea una línea mientras el comando ping
todavía lo escribe y el resultado son cortes de línea.
@echo off
ping -t localhost|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"
Se incluyen dos comandos de pause
adicionales al comienzo de la subshell (solo se puede usar uno, pero como la pause
consume un carácter de entrada, se rompe un par CRLF y se lee una línea con una LF) para esperar datos de entrada, y un ping -n 2 localhost
está incluido para esperar un segundo por cada lectura en el ciclo interno. El resultado es un comportamiento más estable y menos uso de CPU.
NOTA: El ping
interno puede reemplazarse por una pause
, pero luego el primer carácter de cada línea leída es consumido por la pause
y no recuperado por el set /p