เปลี่ยน Ping ที่แสดงเวลาจริง


9

มีการเปลี่ยน ping ที่จะแสดงวันที่ / เวลาของระบบนอกเหนือจากเวลาไปกลับและหมายเลขลำดับหรือไม่ ฉันต้องการเครื่องมือที่ทำงานบน 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

12

นี่เป็นวิธีทุบตี :)

$ ping localhost | ในขณะที่อ่านบรรทัด ทำ echo -e "$ (วันที่) \ t $ line"; เสร็จแล้ว
อังคาร 3 พ.ย. 04:46:26 MSK 2009 PING localhost (127.0.0.1) 56 (84) ไบต์ของข้อมูล
อังคาร 3 พ.ย. 04:46:26 MSK 2009 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 1 ttl = 64 เวลา = 0.033 ms
อังคาร 3 พ.ย. 04:46:27 MSK 2009 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 2 ttl = 64 เวลา = 0.040 ms
อังคาร 3 พ.ย. 04:46:28 MSK 2009 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 3 ttl = 64 เวลา = 0.046 ms
อังคาร 3 พ.ย. 04:46:29 MSK 2009 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 4 ttl = 64 เวลา = 0.046 ms

ตอนนี้ให้dateคำสั่งสร้างเอาต์พุตที่ดีขึ้นอีกเล็กน้อย:

$ ping localhost | ในขณะที่อ่านบรรทัด ทำ echo -e "$ (วันที่ +% H:% I:% S) \ t $ line"; เสร็จแล้ว
04:04:13 PING localhost (127.0.0.1) 56 (84) ไบต์ของข้อมูล
04:04:13 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 1 ttl = 64 เวลา = 0.044 ms
04:04:14 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 2 ttl = 64 เวลา = 0.039 ms
04:04:15 64 ไบต์จาก localhost (127.0.0.1): icmp_seq = 3 ttl = 64 เวลา = 0.042 ms

ไชโย!


คนอวดดี: ฉันจะไม่พูดภาษาพื้นเมืองเพราะคำสั่ง date เป็นคำสั่งภายนอกและไม่ได้สร้างขึ้นเพื่อทุบตี ฉันชี้เฉพาะเพราะถ้าคุณไม่ทราบ (คุณอาจเป็นฉันไม่รู้) โดยตระหนักว่ามีคำสั่งในตัวและไม่ใช่คำสั่งในตัวเป็นสิ่งสำคัญ ยังคงเป็นทางออกที่ดีแม้ว่า :-)
ไคล์ Brandt

1
ยังไม่จำเป็นต้องwhile [ 0 ]:ping google.com | while read line; do echo -e "$(date) $line"; done
Kyle Brandt

5

ตัวเลือก "ที่หนักกว่า" ที่เราใช้ทำการตรวจสอบความหน่วงและการสูญหายของแพ็คเก็ตเป็นประจำคือการสูบบุหรี่ ไม่เพียงให้ข้อมูลเพิ่มเติมในรูปแบบที่อ่านง่ายขึ้นเท่านั้น แต่คุณยังสามารถทำสิ่งต่างๆเช่นการตรวจสอบ HTTP และ DNS แทนการใช้ ICMP ไฟร์วอลล์และเราเตอร์หลายตัวจะยกเลิกการจัดลำดับความสำคัญของ ICMP ซึ่งส่งผลให้เกิดการวัดเวลาแฝงที่ผิดพลาด

Smokeping


เครื่องมือที่ยอดเยี่ยมในขณะที่หนักกว่าสคริปต์มันก็ยังดีที่เพียงแค่ติดตั้งสำหรับการตรวจสอบระบบต่าง ๆ
sclarson

2

สำหรับลินุกซ์, ติดตั้งซึ่งจะทำให้คุณmoreutilsts

$ 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)Tข้อกำหนดรูปแบบเพื่อหลีกเลี่ยงการโทรล่ามที่หนักกว่าหรือวางdateกระบวนการใหม่สำหรับทุกบรรทัด

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

เช่นเดียวกับตัวอย่างของ perl สิ่งนี้สามารถทำได้โดยการ piping เพื่อ sed และ awk ฉันคิดว่าtsเป็นวิธีที่ง่ายที่สุด แต่เราไม่มีในเซิร์ฟเวอร์ของเรา เหมือนกันสำหรับสภาพแวดล้อมเช่น busybox

unbufferหากคำสั่งของคุณบัฟเฟอร์ผลลัพธ์ที่คุณสามารถใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.