วิธีการแสดงการ ping ที่ล้มเหลว


24

เมื่อเราใช้ windows ping มันจะแสดง ping ที่ล้มเหลว Ubuntu มีฟังก์ชั่นที่คล้ายกันหรือไม่

ping ที่ล้มเหลวค่อนข้างมีประโยชน์เมื่อทำการดีบั๊กเครือข่าย พวกคุณแก้ปัญหานี้อย่างไร? ฉันแค่ต้องการวิธีแก้ปัญหาง่ายๆฉันไม่ต้องการสคริปต์ยาว ๆ


2
คุณสามารถให้ผลลัพธ์ตัวอย่างหรือภาพหน้าจอเพื่อเสริมคำถามได้หรือไม่
สีเขียว

1
คุณกำลังมองหาหรือข้อมูลรายละเอียดมากกว่า5 packets transmitted, 0 received, 100% packet loss, time 4032ms(ข้อมูลเช่นนี้จะถูกพิมพ์เมื่อ ping ยุติไม่ว่าจะด้วยตัวเองหรือโดย Ctrl + C)? คุณกำลังมองหาข้อมูลแยกกันเกี่ยวกับการส่ง Ping แต่ละครั้งหรือไม่
Eliah Kagan

1
ลินุกซ์นั้นยอดเยี่ยมและพวกเราทุกคนที่นี่ชอบมันด้วยเหตุผลหลายอย่าง แต่ ... บางครั้ง Windows ก็ทำให้ถูกต้องและลินุกซ์เข้าใจผิด ใช่แม้ในเครื่องมือพื้นฐานของ CLI ใช่แม้ในเครื่องมือ CLI เครือข่ายขั้นพื้นฐาน! หากไม่มีวิธีง่ายๆในการรับข้อความบนหน้าจอเมื่อสิ่งต่าง ๆ ผิดพลาดเราต้องยอมรับว่าเป็น "คุณสมบัติที่เราขาด" แน่นอนว่าเราไม่ต้องการแกล้งเป็นสิ่งที่ซับซ้อนจนเราไม่สามารถเข้าใจได้ว่า OP ต้องการอะไร (โดยเฉพาะอย่างยิ่งเมื่อคุณลักษณะเปิดใช้งานโดยค่าเริ่มต้นในกล่องรอบ ๆ เราสองสามล้านกล่อง)
ndemou

ฉันสาบานได้เลยว่าฟีเจอร์นี้มีอยู่ใน linux ping ก่อนหน้านี้ มันมีอยู่ใน MacOS เช่นกัน (ซึ่งสร้างขึ้นบนยูนิกซ์) มันเกินกว่าฉันทำไมมันไม่ควรอยู่ที่นั่น ฉันมีเส้นที่ทำงานเป็นระยะ ๆ และเพื่อหาความยาวของหน้ามืดที่ฉันต้องร่อนผ่านเอาท์พุทที่มองหาการกระโดดแทนที่จะมีเส้นที่ชัดเจน
Silvio Levy

คำตอบ:


26

คำตอบที่ถูกต้องคือ: ไม่มีสิ่งเช่น "การสูญเสีย ping ที่ล้มเหลว " (การตอบกลับล้มเหลวเช่น "ปลายทางไม่สามารถเข้าถึงได้" ถูกพิมพ์อยู่เสมอซึ่งแตกต่างจากการไม่ตอบกลับเลย)

ยูทิลิตี้ Ping จะพิมพ์คำตอบที่ได้รับทุกครั้งแม้ว่าจะเคยมีการตัดสินใจมาก่อนแล้วก็ตาม เป็นไปได้ทั้งหมดที่จะได้รับคำตอบที่ผิด

แม้บนโทรศัพท์ Android ของฉัน, ยูทิลิตี้หุ้น ping สนับสนุนทั้ง 2 ตัวเลือก:
-Dพิมพ์ประทับเวลาก่อนที่ทุกข้อความ
-Oพิมพ์ข้อความตอบกลับเมื่อไม่ได้รับในเวลาและมันจะมากหรือน้อยสิ่งที่ถูกถาม
อย่างไรก็ตามตัวเลือกเหล่านี้ดูเหมือนจะไม่ได้รับการสนับสนุนทุกที่ (เช่น Debian Wheezy ขาดเท่าที่ฉันรู้ในขณะที่ Jessie มีพวกเขาbusybox pingไม่สนับสนุนพวกเขา)

นี่คือตัวอย่างเอาต์พุตที่ฉันจัดการเพื่อให้ได้รับ (ข้ามคำตอบ ping ที่ไม่สำคัญ):

u0_a93@NX505J:/ $ ping -D -O 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1440545014.805478] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=244 time=116 ms
~~~~~~~~~~
[1440545142.995443] 64 bytes from 8.8.8.8: icmp_seq=129 ttl=244 time=110 ms
[1440545144.885601] no answer yet for icmp_seq=130
[1440545145.455485] 64 bytes from 8.8.8.8: icmp_seq=131 ttl=244 time=568 ms
[1440545145.455780] 64 bytes from 8.8.8.8: icmp_seq=130 ttl=244 time=1569 ms
[1440545146.005850] 64 bytes from 8.8.8.8: icmp_seq=132 ttl=244 time=119 ms
~~~~~~~~~~
[1440545254.055962] 64 bytes from 8.8.8.8: icmp_seq=240 ttl=244 time=115 ms
^C
--- 8.8.8.8 ping statistics ---
240 packets transmitted, 240 received, 0% packet loss, time 239250ms
rtt min/avg/max/mdev = 109.062/138.757/1569.620/101.608 ms, pipe 2

โปรดทราบว่ามีการรายงาน # 130 ครั้งแรกที่หายไปจากนั้นได้รับหลังจาก # 131 และในที่สุดรายงานการสูญหายของแพ็กเก็ตจึงเป็นศูนย์


หมายเหตุเพิ่มเติมเกี่ยวกับ Windows:

บน Windows ดูเหมือนว่า ping จะรอการตอบกลับนานขึ้นแล้วประกาศว่ามันหายไปและไม่สนใจถ้ามันจะมาในภายหลัง

โดยค่าเริ่มต้นช่วงเวลาคือ 1 วินาทีและหมดเวลาเป็น 4 วินาทีดังนั้น:
ใน RTT ต่ำ pings จะถูกส่งด้วยช่วงเวลา 1 วินาที
ใน RTT> 4 ส่ง Ping จะถูกส่งเป็นระยะเวลา 4 วินาที (หรือ 5 ไม่แน่ใจ) และจะรายงานทั้งหมดว่าล้มเหลวเช่นเดียวกับถ้าเซิร์ฟเวอร์ไม่ตอบสนอง


1
+1 สำหรับ-Oตัวเลือกมีอยู่และทำงานได้ดีใน Ubuntu ที่เชื่อถือได้ (& Linux Mint 17.2) จากแพ็คเกจ iputils-ping รุ่น 3: 20121221-4ubuntu1.1
Xen2050

11

ออกคำตอบบางส่วนโดย EvgEnZh แต่ใช้เวอร์ชันของฉันเอง:

ping -O -q 8.8.8.8

ทำให้พิมพ์ข้อความเมื่อการตอบกลับใช้เวลานานเกินไปหรือไม่กลับมา ( -O) และไม่แสดงข้อความเมื่อกลับมา ( -q) ผลลัพธ์คือคุณจะได้รับเอาต์พุตเมื่อแพ็กเก็ตหายไปเท่านั้น วิธีนี้ทำให้การค้นหาปัญหาที่เกิดขึ้นเป็นระยะ ๆ ทำได้ง่ายขึ้นโดยทำให้คุณไม่ต้องร่อนผ่านข้อความ "ใช้งานได้" สำหรับสถานที่ไม่กี่แห่งที่ยากจน


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

3

อาจping -fจะเหมาะสำหรับคุณ จากคู่มือปิง:

-f

ping น้ำท่วม สำหรับทุก ECHO_REQUEST ที่ส่งจุด ''. '' จะถูกพิมพ์ในขณะที่ ECHO_REPLY ที่ได้รับจะได้รับการ Backspace ถูกพิมพ์ นี่เป็นการแสดงจำนวนแพ็คเก็ตที่ถูกทิ้งอย่างรวดเร็ว หากไม่ได้กำหนดช่วงเวลามันจะกำหนดช่วงเวลาเป็นศูนย์และส่งแพ็กเก็ตให้เร็วที่สุดเมื่อกลับมาหรือหนึ่งร้อยครั้งต่อวินาทีแล้วแต่จำนวนใดจะมากกว่า เฉพาะผู้ใช้ขั้นสูงเท่านั้นที่สามารถใช้ตัวเลือกนี้โดยไม่มีช่วงเวลาเป็นศูนย์

สำหรับ 1 echo_request ทุกวินาทีมันจะดูเหมือน ping -i 1 -f 8.8.8.8


ไม่แน่ใจว่าเป็นฟีเจอร์ใหม่หรือไม่ฉันเห็นการปิงที่ล้มเหลว
王子 1986

คุณใช้ตัวเลือกใดในการรายงานการส่ง Ping ที่ล้มเหลว คุณได้รับข้อความอะไรสำหรับการ ping ที่ล้มเหลว
Daniel Yuste Aroca

ในขณะที่ฉันเพิ่งใช้ ping ข้อความก็เป็นแบบนี้ $ ping 172.18.1.12 PING 172.18.1.12 (172.18.1.12) 56 (84) ไบต์ของข้อมูล จาก 172.18.1.224 icmp_seq = 1 โฮสต์ปลายทางไม่สามารถเข้าถึงได้จาก 172.18.1.224 icmp_seq = 2 โฮสต์ปลายทางไม่สามารถเข้าถึงได้จาก 172.18.1.224 icmp_seq = 3 โฮสต์ปลายทางไม่สามารถเข้าถึงได้
王子 1986

2
"Destination Host Unreachable" นั้นไม่เหมือนกับการหมดเวลา ping
ndemou

ping -f ไม่ใช่คำตอบเพราะมันไม่ได้ทิ้งไว้ สิ่งที่จำเป็นคือประเภทบรรทัดหนึ่งสำหรับการ ping ที่ประสบความสำเร็จและแตกต่างจากความล้มเหลวดังนั้นหนึ่งสามารถบอกได้ทันที (ในสถานการณ์ที่บริการไม่สม่ำเสมอ) ความถี่และระยะเวลาที่หมดสติ
Silvio Levy

0

แม้จะมีตัวเลือก -v แต่ ping ก็ไม่ทำเช่นนั้น ดูคำถามนี้ แต่ถ้าสิ่งนี้สำคัญมาก (หรือสนุก) สำหรับคุณคุณสามารถดาวน์โหลดซอร์สปรับเปลี่ยนรหัสเพื่อรวมการเรียก printf ที่เหมาะสม สถานที่ที่ดีที่จะอยู่ที่ส่วนท้ายของเมธอด 'send_probe' (บรรทัด 619 บน 12.10) ...

ก่อนอื่นคุณจะได้รับแหล่งที่มา

apt-get source iputils
cd iputils*

ทำการแก้ไข

gedit ping.c

สร้างและติดตั้งแพ็คเกจที่สร้างขึ้น ...

apt-get install libsysfs-dev
dpkg-buildpackage

ฉันต้องการทำสิ่งนี้ (และโหวตคำตอบนี้เกิน 10 ครั้ง) แต่ต้องมีบางอย่างขาดหายไป ฉันทำงานภายใต้ sudo -s หลังจากแก้ไข ping.c ถ้าฉันลอง "ทำให้" ฉันได้รับ "ข้อผิดพลาดร้ายแรง: sys / ความสามารถ.h: ไม่มีไฟล์ดังกล่าว" ถ้าฉันทำตามสองบรรทัดถัดไปในคำตอบ (apt-get install และ dpkg -... ) ฉันจะไม่เกิดข้อผิดพลาด แต่ฉันไม่รู้ว่าวางไฟล์ปฏิบัติการไว้ที่ใด ไฟล์เก่าที่รันได้ (/ bin / ping) ยังคงอยู่ - ฉันรู้ว่ามันเก่าจากการประทับเวลาและเพราะมันไม่ได้ทำงานแตกต่างกัน
Silvio Levy

-1

ขอบคุณสำหรับคำตอบทั้งหมด ดูเหมือนว่า ping Ubuntu ล่าสุดสามารถแสดง ping ล้มเหลว

ขอบคุณอีกครั้ง.


1
ไม่มีเลย (จนถึง 2015- ม.ค. อย่างน้อย) "Destination Host Unreachable" ไม่เหมือนกับการหมดเวลา ping
ndemou

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