Ping thay thế hiển thị thời gian thực


9

Có sự thay thế ping nào sẽ hiển thị ngày / giờ của hệ thống ngoài thời gian chuyến đi khứ hồi và số thứ tự không? Tôi thích một công cụ chạy trên Linux, nhưng nếu có một công cụ cli tôi có thể chạy trên Windows cũng sẽ tốt.

Có một hệ thống mà người dùng đang báo cáo đang tạm dừng . Điều này dường như không xảy ra bất cứ lúc nào. Tôi chưa thể yêu cầu người dùng báo cáo biết khi nào nó xảy ra với đủ tính cụ thể để có thể tương quan tạm dừng với bất kỳ nhật ký nào.

Một trong những kỹ thuật viên đã để lại một quả bóng chạy với máy chủ trong một ngày. Thời gian khứ hồi đã khá lớn tại một thời điểm. Tôi đang cố gắng tìm hiểu chính xác khi nào điều này xảy ra để tôi có thể thu hẹp mục nhập nhật ký nào tôi nên xem và có thể tương quan tạm dừng này với dữ liệu khác mà tôi có thể thu thập được với nhật ký hiệu suất, nhật ký thiết bị, v.v.

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

Câu trả lời:


12

Bạn có thể thêm dấu thời gian bằng cách sử dụng perl như thế này:

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

1
Điều đó gần như quá dễ dàng! :) Tôi đã tìm kiếm điều này trong gần 30 phút với kết quả không tốt, cảm ơn!
l0c0b0x

12

Đây là một giải pháp bash :)

$ ping localhost | trong khi đọc dòng; làm echo -e "$ (ngày) \ t $ line"; làm xong
Thứ ba ngày 3 tháng 11 04:46:26 MSK 2009 PING localhost (127.0.0.1) 56 (84) byte dữ liệu.
Thứ ba ngày 3 tháng 11 04:46:26 MSK 2009 64 byte từ localhost (127.0.0.1): icmp_seq = 1 ttl = 64 time = 0,033 ms
Thứ ba ngày 3 tháng 11 04:46:27 MSK 2009 64 byte từ localhost (127.0.0.1): icmp_seq = 2 ttl = 64 time = 0,040 ms
Thứ ba ngày 3 tháng 11 04:46:28 MSK 2009 64 byte từ localhost (127.0.0.1): icmp_seq = 3 ttl = 64 time = 0,046 ms
Thứ ba ngày 3 tháng 11 04:46:29 MSK 2009 64 byte từ localhost (127.0.0.1): icmp_seq = 4 ttl = 64 time = 0.046 ms

Bây giờ, hãy làm cho datelệnh tạo ra đầu ra tốt hơn một chút:

$ ping localhost | trong khi đọc dòng; làm echo -e "$ (ngày +% H:% I:% S) \ t $ line"; làm xong
04:04:13 PING localhost (127.0.0.1) 56 (84) byte dữ liệu.
04:04:13 64 byte từ localhost (127.0.0.1): icmp_seq = 1 ttl = 64 time = 0,044 ms
04:04:14 64 byte từ localhost (127.0.0.1): icmp_seq = 2 ttl = 64 time = 0.039 ms
04:04:15 64 byte từ localhost (127.0.0.1): icmp_seq = 3 ttl = 64 time = 0,042 ms

Chúc mừng!


Pedantic: Tôi sẽ không nói bản địa vì lệnh date là một lệnh bên ngoài và không được tích hợp để bash. Tôi chỉ nêu ra vì nếu bạn không biết (có thể bạn không biết), việc nhận ra rằng có các lệnh tích hợp và không tích hợp là rất quan trọng. Vẫn là một giải pháp tốt :-)
Kyle Brandt

1
Cũng không cần while [ 0 ]:ping google.com | while read line; do echo -e "$(date) $line"; done
Kyle Brandt

5

Tùy chọn "nặng hơn" mà chúng tôi sử dụng để kiểm tra độ trễ và mất gói thường xuyên là Khói . Nó không chỉ cung cấp cho bạn thêm một chút thông tin ở định dạng dễ đọc hơn, mà bạn còn có thể thực hiện những việc như kiểm tra HTTP và DNS thay vì dựa vào ICMP. Nhiều tường lửa và bộ định tuyến sẽ ưu tiên ICMP dẫn đến các phép đo độ trễ sai.

Hút thuốc


Công cụ tuyệt vời, trong khi nặng hơn các tập lệnh, nó cũng có thể tốt khi chỉ thiết lập để giám sát các hệ thống khác nhau.
sclarson

2

Đối với Linux, cài đặt moreutilssẽ cung cấp cho bạn 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

Chúng ta hãy sử dụng trình bao có sẵn printfvới %(datefmt)Tđặc tả định dạng để tránh gọi các thông dịch viên nặng hơn hoặc sinh ra một datequy trình mới cho mỗi dòng.

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

Giống như ví dụ perl, điều này có thể được thực hiện bằng cách chuyển sang sed và awk. Tôi nghĩ tslà dễ nhất, nhưng chúng tôi không có điều đó trên các máy chủ của chúng tôi. Tương tự cho các môi trường như busybox.

Nếu lệnh của bạn đệm đầu ra của nó, bạn có thể sử dụng unbuffer.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.