"Ping"표시 시간 및 ping 날짜를 명령하는 방법


39

핑하면이 디스플레이가 나타납니다.

> ping -i 4 www.google.fr 
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms

나는 핑 시간을 보내고 싶습니다.

다음과 같은 것 :

> (right functions) + ping -i 7 www.google.fr 
mardi 15 mai 2012, 10:29:06 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
mardi 15 mai 2012, 10:29:13 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
mardi 15 mai 2012, 10:29:20 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms

명령 줄에서 어떻게 할 수 있습니까 (가능한 경우)?


답변:


77

사용하다:

ping www.google.fr | while read pong; do echo "$(date): $pong"; done

다음과 같은 결과가 나타납니다.

여기에 이미지 설명을 입력하십시오


1
와아 너무 좋아. 쉘을 배우는 데 도움이됩니다. 감사합니다!
Olivier Pons

가동 시간 (초)ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
dps

16

ping -D타임 스탬프를 Unix 시간으로 가져 오는 옵션 을 사용할 수도 있습니다.

tilo@t-ubuntu:~$ ping google.com -D
PING google.com (173.194.33.73) 56(84) bytes of data.
[1388886989.442413] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=1 ttl=57 time=11.1 ms
[1388886990.443845] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=2 ttl=57 time=11.0 ms
[1388886991.445200] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=3 ttl=57 time=10.8 ms
[1388886992.446617] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=4 ttl=57 time=10.9 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 10.860/11.005/11.139/0.123 ms
tilo@t-ubuntu:~$ 

다음은 약간 다른 형식의 "Achu"명령 버전입니다.

ping www.google.com -i 10 -c 3000 | while read pong; do echo "$(date +%Y-%m-%d_%H%M%S): $pong"; done >PingTest_2014-01-04.log

그것은 당신을 얻는다 :

2014-01-04_175748: 64 bytes from sea09s16-in-f19.1e100.net (173.194.33.115): icmp_req=13 ttl=57 time=10.5 ms

6

tsstdin을 읽고, 타임 스탬프를 추가하고, stdout에 쓰는 유틸리티라고하는 유틸리티가 있습니다 :

me@my-laptop:~$ ping localhost | ts
Nov 08 09:15:41 PING localhost (127.0.0.1) 56(84) bytes of data.
Nov 08 09:15:41 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.060 ms
Nov 08 09:15:42 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.098 ms
Nov 08 09:15:43 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.082 ms
Nov 08 09:15:44 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms

와 함께 우분투에 설치할 수 있습니다 .sudo apt install moreutils


1
+1 참고로 apt install moreutils
-ts

3

gawk(또는을 가리키는 awk경우)를 사용할 수도 있습니다 ./etc/alternatives/awk/usr/bin/gawk

ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'

이것은 Achu의 답변 접근 방식과 유사 하지만 호출하는 쉘 루프 대신 ping출력이 파이프됩니다 . 그 접근 방식과 마찬가지로없이 작동 하지만, 당신이 통과하지 않는 경우 후 핑 정지를 만들기 위해 N 핑, 당신이 가진 루프 중지 +를 , 일반적인 통계를 인쇄되지 않습니다.gawkdate-c-c nCtrlCping

ek@Io:~$ ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:09:51 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:09:51 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=327 ms
Tue 03 Jan 2017 10:09:52 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=302 ms
Tue 03 Jan 2017 10:09:53 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=282 ms
Tue 03 Jan 2017 10:09:54 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=349 ms
Tue 03 Jan 2017 10:09:54 AM EST:
Tue 03 Jan 2017 10:09:54 AM EST: --- www.google.fr ping statistics ---
Tue 03 Jan 2017 10:09:54 AM EST: 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
Tue 03 Jan 2017 10:09:54 AM EST: rtt min/avg/max/mdev = 282.035/315.227/349.166/25.398 ms
ek@Io:~$ ping www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:10:35 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=305 ms
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=365 ms
Tue 03 Jan 2017 10:10:36 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=390 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=824 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=5 ttl=51 time=287 ms
^C

이것은 ping출력이 파이프로 전달 되는지 gawk또는 쉘 while루프로 발생하는지에 관계없이 발생합니다 . 그 이유는 + 가 눌려 졌을 때 파이프의 오른쪽에있는 명령 pingSIGINT 를 받고 종료되기 전에 통계를 인쇄 할 줄 모르기 때문입니다.CtrlCping

파이프의 왼쪽에서 실행 ping하지 않고 -c(위 그림 참조) 통계를 인쇄하는 방식으로 파이프를 종료하려는 경우 실행중인 터미널에서 Ctrl+ 를 누르지 않고 C실행할 수 있습니다. 다른 터미널 에서 명령 의 프로세스 ID로 바꿉니다 . 인스턴스를 하나만 실행하는 경우 간단히을 사용할 수 있습니다 .kill -INT PIDPIDpingpingkillall -INT ping

또는 ping파이프 왼쪽 의 명령 을 쉘을 실행 하는 명령으로 바꾸고 해당 쉘의 프로세스 ID를보고 한 다음 해당 쉘을 ping명령으로 바꿉니다 (동일한 PID를 갖기 때문에).

sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'

그런 다음 첫 번째 출력 행에 ping명령 의 프로세스 ID가 표시 됩니다 (일반적으로 매번 다름). 다음과 같지만 시간과 날짜가 다르고 프로세스 ID가 다를 수 있습니다.

Tue 20 Mar 2018 12:11:13 PM EDT: 7557

그런 다음 다른 터미널 kill -INT 7557에서을 실행 7557하여 본 실제 프로세스 ID로 바꾸어 ping통계를 인쇄하는 방식으로 명령 을 종료 할 수 있습니다.

(쉘의 작업 제어 기능을 이용한다면, 같은 터미널에서도이를 달성 할 수 있습니다. 그러나 터미널에서 명령을 실행 한 곳에서 여분의 부분을 제거하지 않고 터미널에서 텍스트를 복사하려면 ping별도의 터미널에서 종료해야합니다 .)

더 읽을 거리 :


ctrl + c를 ping에 먼저 보내는 방법이 있습니까?
atti

1
예 @atti, 당신은 보낼 수있는 SIGINT받는 사람 (Ctrl + C를 누르면 무엇 인) ping사용, 특히 공정 kill또는 killall. 이 답변을 세부적으로 확장했습니다.
Eliah Kagan

awk의 좋은 사용. +1
ripat

0
ping google.in | xargs -n1 -i bash -c 'echo `date +"%Y-%m-%d %H:%M:%S"`" {}"'

파일로 파일을 저장하려면 터미널에 아래 명령을 입력하십시오

ping google.in | xargs -n1 -i bash -c 'echo `date +"%Y-%m-%d %H:%M:%S"`" {}"' >> "/home/name_of_your_computer/Desktop/Ping_Test.txt"

텍스트 파일을 만들 필요가 없으며 자동으로 수행됩니다.

Ping_Test.txt

2018-04-19 15:35:53 PING google.in (216.58.203.164) 56(84) bytes of data.
2018-04-19 15:35:53 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=1 ttl=57 time=23.0 ms
2018-04-19 15:35:53 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=2 ttl=57 time=38.8 ms
2018-04-19 15:35:54 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=3 ttl=57 time=32.6 ms
2018-04-19 15:35:55 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=4 ttl=57 time=22.2 ms
2018-04-19 15:35:56 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=5 ttl=57 time=22.1 ms
2018-04-19 15:35:59 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=7 ttl=57 time=23.6 ms
2018-04-19 15:36:00 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=8 ttl=57 time=22.6 ms
2018-04-19 15:36:01 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=9 ttl=57 time=22.3 ms
2018-04-19 15:36:02 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=10 ttl=57 time=26.3 ms

-1

(Achu와 Eliah Kagan에게 아이디어를 주셔서 감사합니다)

  • ping출력 시간을 추가
  • 각주 유지 ping
  • 이 전체 구성을 ctrl+c

이 작업을 수행하려면 명령의 오른쪽 부분 (파이프 뒤)에 다음을 SIGINT사용하여 무시하도록 지시해야합니다 trap "" INT.

$ ping www.google.fr | bash -c 'trap "" INT; awk "{print strftime(\"%c - \") \$0}"'  
lun 26 Mar 2018 22:05:08 +0300 - PING www.google.fr (173.194.73.94) 56(84) bytes of data.
lun 26 Mar 2018 22:05:08 +0300 - 64 bytes from lq-in-f94.1e100.net (173.194.73.94): icmp_seq=1 ttl=47 time=19.6 ms
lun 26 Mar 2018 22:05:09 +0300 - 64 bytes from lq-in-f94.1e100.net (173.194.73.94): icmp_seq=2 ttl=47 time=20.1 ms
^Clun 26 Mar 2018 22:05:09 +0300 - 
lun 26 Mar 2018 22:05:09 +0300 - --- www.google.fr ping statistics ---
lun 26 Mar 2018 22:05:09 +0300 - 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
lun 26 Mar 2018 22:05:09 +0300 - rtt min/avg/max/mdev = 19.619/19.866/20.114/0.284 ms
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.