실시간을 보여주는 Ping 교체


9

왕복 시간 및 시퀀스 번호 외에 시스템 날짜 / 시간을 표시하는 핑 대체품이 있습니까? Linux에서 실행되는 도구를 선호하지만 CLI 도구가 있으면 Windows에서도 실행할 수 있습니다.

사용자가보고하는 시스템이 간헐적으로 일시 중지 됩니다. 이것은 일관된 시간에 발생하지 않는 것 같습니다. 보고서 사용자에게 일시 정지 를 로그 와 연관시킬 수있을만큼 충분히 구체적으로 발생한 시점을 알려주지 못했습니다.

기술 중 하나가 호스트에 대해 ping을 하루 동안 두었습니다. 왕복 시간은 한 시점에서 꽤 커졌습니다. 나는 이것이 정확히 언제 발생하는지 파악하려고 노력하고있어보고있는 로그 항목을 좁힐 수 있으며이 일시 중지 를 성능 로그, 장치 로그 등으로 수집 할 수있는 다른 데이터와 상관 시킬 수 있습니다.

64 bytes from 10.2.4.241: icmp_seq=1825 ttl=64 time=0.321 ms
64 bytes from 10.2.4.241: icmp_seq=1826 ttl=64 time=0.371 ms
64 bytes from 10.2.4.241: icmp_seq=1827 ttl=64 time=13937.638 ms
64 bytes from 10.2.4.241: icmp_seq=1828 ttl=64 time=12937.526 ms
64 bytes from 10.2.4.241: icmp_seq=1829 ttl=64 time=11937.392 ms
64 bytes from 10.2.4.241: icmp_seq=1830 ttl=64 time=10937.275 ms
...
64 bytes from 10.2.4.241: icmp_seq=1840 ttl=64 time=936.073 ms
64 bytes from 10.2.4.241: icmp_seq=1841 ttl=64 time=0.410 ms

답변:


12

다음과 같이 perl을 사용하여 타임 스탬프를 추가 할 수 있습니다.

ping 127.0.0.1 | perl -pe 'BEGIN {use POSIX;} print strftime("%Y-%m-%d %H:%M:%S ", localtime)'

1
거의 너무 쉽습니다! :) 나는 거의 30 분 동안 이것을 검색했지만 많은 좋은 결과를 얻지 못했습니다.
l0c0b0x 2018

12

bash 솔루션은 다음과 같습니다. :)

$ ping localhost | 읽는 동안 줄; echo -e "$ (date) \ t $ line"; 끝난
11 월 3 일 화요일 04:46:26 MSK 2009 PING localhost (127.0.0.1) 56 (84) 바이트의 데이터.
화요일 11 월 3 일 04:46:26 로컬 호스트에서 MSK 2009 64 바이트 (127.0.0.1) : icmp_seq = 1 ttl = 64 time = 0.033ms
화요일 11 월 3 일 04:46:27 로컬 호스트에서 MSK 2009 64 바이트 (127.0.0.1) : icmp_seq = 2 ttl = 64 time = 0.040 ms
화요일 11 월 3 일 04:46:28 로컬 호스트에서 MSK 2009 64 바이트 (127.0.0.1) : icmp_seq = 3 ttl = 64 time = 0.046ms
화요일 11 월 3 일 04:46:29 로컬 호스트에서 MSK 2009 64 바이트 (127.0.0.1) : icmp_seq = 4 ttl = 64 time = 0.046 ms

이제 date명령이 좀 더 멋진 출력을 만들어 봅시다 :

$ ping localhost | 읽는 동안 줄; echo -e "$ (date + % H : % I : % S) \ t $ line"; 끝난
04:04:13 PING localhost (127.0.0.1) 56 (84) 바이트의 데이터.
04:04:13 로컬 호스트에서 64 바이트 (127.0.0.1) : icmp_seq = 1 ttl = 64 time = 0.044 ms
04:04:14 로컬 호스트에서 64 바이트 (127.0.0.1) : icmp_seq = 2 ttl = 64 time = 0.039 ms
04:04:15 로컬 호스트에서 64 바이트 (127.0.0.1) : icmp_seq = 3 ttl = 64 time = 0.042 ms

건배!


Pedantic : date 명령은 외부 명령이며 bash에 내장되어 있지 않기 때문에 네이티브라고 말하지 않습니다. 나는 당신이 알지 못한다면 (내가 알지 못할 수도 있음) 내장 명령과 내장 명령이 없다는 것을 깨닫기 때문에 그것을 지적합니다. 그래도 여전히 좋은 해결책 :-)
Kyle Brandt

1
또한 필요하지 않습니다 while [ 0 ]:ping google.com | while read line; do echo -e "$(date) $line"; done
Kyle Brandt

5

대기 시간과 패킷 손실을 정기적으로 확인하는 데 사용하는 "무거운"옵션은 Smokeping 입니다. 보다 읽기 쉬운 형식으로 정보를 조금 더 제공 할뿐만 아니라 ICMP에 의존하는 대신 HTTP 및 DNS 검사와 같은 작업을 수행 할 수도 있습니다. 많은 방화벽과 라우터는 ICMP의 우선 순위를 낮추어 지연 시간 측정을 잘못합니다.

흡연


훌륭한 도구이지만 스크립트보다 무겁지만 다양한 시스템을 모니터링하기 위해 설정하는 것이 좋습니다.
sclarson 2009

2

Linux의 경우 설치 moreutils하면 ts.

$ ping nu.nl | ts
jan 29 14:39:51 PING nu.nl (62.69.166.254) 56(84) bytes of data.
jan 29 14:39:51 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=1 ttl=247 time=29.8 ms
jan 29 14:39:52 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=2 ttl=247 time=29.4 ms

0

더 많은 인터프리터를 호출하거나 모든 라인에 새로운 프로세스를 생성하는 것을 피하기 위해 형식 스펙 printf과 함께 쉘 내장을 사용합시다 .%(datefmt)Tdate

ping -c4 localhost | while read line; do printf "%([%Y-%m-%dT%H:%M:%S])T %s\n" "-1" "$line"; done

펄 예제와 마찬가지로 이것은 sed와 awk로 파이핑하여 수행 할 수 있습니다. ts가장 쉬운 방법 이라고 생각 하지만 서버에는 없습니다. busybox와 같은 환경에서도 동일합니다.

명령이 출력을 버퍼링하면을 사용할 수 있습니다 unbuffer.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.