web-dev-qa-db-ja.com

タイムスタンプ付きのping

Windowsコマンドプロンプトcmdでは、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

このような出力を得る可能性はありますか?

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

CMDが提供するコマンドだけでこれを達成したいことに注意してください。

61
Isaac Lem
@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!)" 

note:バッチファイル内で使用されるコード。コマンドラインから使用するには、%%a%aに置き換えます。

Pingを開始し、正しい行バッファ出力(find /v)を強制し、遅延拡張を有効にしてcmdプロセスを開始します。これにより、コンソールにエコーされるパイプ付きデータを現在の時刻の先頭に無限ループで読み込みます。

2015-01-08編集:以前のコードには、より速い/新しいマシン/ OSのバージョンで同期の問題があります。 pingコマンドがまだそれを書いている間にset /pは行を読みました、そして、結果はラインカットです。

@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"

2つの追加のpauseコマンドがサブシェルの先頭に含まれています(使用できるのは1つだけですが、pauseは入力文字を消費するため、CRLFペアが壊れ、LFの行が再読み取りされます)。データを入力し、ping -n 2 localhostはインナーループでの各読み込みに対して1秒間待つために含まれています。その結果、より安定した動作と少ないCPU使用率が得られます。

注:内側のpingpauseに置き換えることができますが、その後、各行の最初の文字はpauseによって消費され、set /pによって検索されることはありません。

86
MC ND

WindowsPowershell:

オプション1

ping.exe -t COMPUTERNAME|Foreach{"{0} - {1}" -f (Get-Date),$_}

オプション2

Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime
47
Hames

あなたはこれをすることができます:

ping 10.0.0.1 | while read line; do echo `date` - $line; done

それはあなたが最後に^ Cを押したときにあなたが通常得る統計を与えないが。

35
Sam Critchley

バッチスクリプト:

@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)

このスクリプトはどのホストにpingを実行するかを尋ねます。 ping出力は画面とログファイルに出力されます。ログファイルの出力例

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

ログファイルはLOG_ [hostname] .logという名前で、スクリプトと同じフォルダに書き込まれます。

25
sabo-fx

Windowsの場合

他の答えの1つを使うことができます。

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

あるいは〜/ .bashrcの関数pingtとして:

pingt() {
  while :;do ping -n -w1 -W1 -c1 $1| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
}

ソース: https://stackoverflow.com/a/26666549/106908

4
rubo77

これを試して:

次のようにしてバッチファイルを作成します。

echo off

cd\

:start

echo %time% >> c:\somedirectory\pinghostname.txt

ping pinghostname >> c:\somedirectory\pinghostname.txt

goto start

要件に基づいて、pingコマンドに独自のオプションを追加できます。これは、pingと同じ行にタイムスタンプを表示しませんが、それでも必要な情報が得られます。

もっと良い方法は、fpingを使うことです。こちらをクリックしてください http://www.kwakkelflap.com/fping.html それをダウンロードする。

2
jjrab

これは誰かに役立つかもしれません:[Windows PowerShellで実行する必要がある]

ping.exe -t 10.227.23.241 |Foreach{"{0} - {1}" -f (Get-Date),$_} >> Ping_IP.txt

- 現在のディレクトリまたはユーザーのホームパスにあるPing_IP.txtファイルを確認します。

上記のコマンドは、以下のようなファイルに出力します。

9/14/2018 8:58:48 AM - Pinging 10.227.23.241 with 32 bytes of data:
9/14/2018 8:58:48 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:49 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:50 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:51 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:52 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:53 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:54 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
2

これを試してみてください。

ping -c2 -s16 sntdn | awk '{print NR "|" strftime( "%Y-%m-%d_%H:%M:%S") "|" $ 0}'とても良いテ・パセ、オハラとテ・シルバ

1
JuanZR

データベースミラーリングのタイムアウトの問題についてネットワークの問題を監視するためにもこれが必要です。以下のようにコマンドコードを使用します。

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

Google.comを自分のサーバー名に変更するだけです。それは私にとっては完璧に機能します。そして、終わったらこれをやめてください。 pingtest.txtファイルは、1分あたり4.5 KBずつ増加します。

Raymond.ccをありがとう。 https://www.raymond.cc/blog/timestamp-ping-with-hrping/

0
DBALUKE HUANG

別のPowerShellメソッド(私は失敗が欲しいだけでした)

$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

    }
}
0

私のコードは、みんなが必要としているものだと思います。

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"

表示する:

[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

:コマンドライン内で使用されるコードで、OSにPowerShellがプリインストールされている必要があります。

0
Eldar Value

Windowsに対するMC NDの回答に対する機能強化。
WinPEで実行するためのスクリプトが必要だったので、次のようにしました。

@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"

これは特定のIPアドレス(この例では192.168.1.1)にハードコードすることも、渡されたパラメータを取ることもできます。そして、MC NDの答えのように、約1秒ごとにpingを繰り返します。

0
Mike Schlueter