Làm thế nào để hiển thị ping thất bại?


24

Khi chúng tôi đang sử dụng ping ping, nó sẽ hiển thị các ping không thành công. Ubuntu có chức năng tương tự không?

Ping thất bại khá hữu ích khi gỡ lỗi mạng. Làm thế nào các bạn giải quyết điều này? Chà, tôi chỉ muốn giải pháp đơn giản, tôi không muốn có một kịch bản dài.


2
Bạn có thể cung cấp một đầu ra mẫu hoặc một ảnh chụp màn hình để bổ sung cho câu hỏi?
màu xanh lá cây

1
Bạn đang tìm kiếm hoặc thông tin chi tiết hơn 5 packets transmitted, 0 received, 100% packet loss, time 4032ms(thông tin như thế được in khi ping kết thúc, cho dù là chính nó hay bởi Ctrl + C)? Bạn đang tìm kiếm dữ liệu riêng biệt về từng ping riêng lẻ?
Eliah Kagan

1
Linux thật tuyệt vời và tất cả chúng ta ở đây đều yêu thích nó vì nhiều lý do nhưng ... đôi khi Windows đã làm đúng và Linux đã hiểu sai. Vâng, ngay cả trong các công cụ CLI cơ bản. Vâng, ngay cả trong các công cụ CLI mạng cơ bản! Nếu không có cách nào dễ dàng để nhận được tin nhắn trên màn hình khi có sự cố xảy ra thì chúng ta phải thừa nhận đó là "một tính năng chúng ta đang thiếu". Chúng tôi chắc chắn không muốn giả vờ nó là thứ gì đó phức tạp đến mức chúng tôi không thể biết chính xác OP đang hỏi cái gì (đặc biệt là khi đó là một tính năng được bật theo mặc định trong một vài triệu hộp xung quanh chúng tôi).
ndemou

Tôi có thể đã thề rằng tính năng này đã có mặt trong ping ping trước đó. Nó cũng có mặt trong MacOS (được xây dựng trên đỉnh unix). Đó là ngoài tôi tại sao nó không nên ở đó. Tôi có một dòng hoạt động không liên tục và để tìm ra chiều dài của sự mất điện, tôi cần sàng lọc đầu ra để tìm kiếm bước nhảy, thay vì có các dòng rõ ràng.
Silvio Levy

Câu trả lời:


26

Câu trả lời đúng là: không có thứ gọi là " thất bại ping". (Các câu trả lời thất bại như "Điểm đến không thể truy cập" luôn được in, nó khác với không có câu trả lời nào cả.)

Tiện ích Ping in ra mỗi phản hồi nhận được, ngay cả khi nó ăn quyết định rằng ping cụ thể này đã bị mất. Hoàn toàn có thể nhận được trả lời theo thứ tự.

Ngay cả trên điện thoại Android của tôi, tiện ích ping ping hỗ trợ 2 tùy chọn sau:
-D in dấu thời gian trước mỗi tin nhắn
-O in một tin nhắn khi không nhận được trả lời kịp thời và ít nhiều những gì được hỏi .
Tuy nhiên, các tùy chọn này dường như không được hỗ trợ ở mọi nơi (ví dụ: Debian Wheezy thiếu chúng theo như tôi biết, trong khi Jessie có chúng. busybox pingKhông hỗ trợ chúng).

Đây là một ví dụ đầu ra mà tôi quản lý để có được (trả lời ping không quan trọng bị bỏ qua):

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

Lưu ý cách # 130 được báo cáo đầu tiên bị thiếu, sau đó nhận được sau # 131 và cuối cùng mất gói được báo cáo là 0.


Ghi chú thêm về Windows:

Trên Windows, ping dường như chờ trả lời lâu hơn và sau đó tuyên bố nó bị thiếu và bỏ qua nếu nó đến sau.

Theo mặc định, khoảng thời gian là 1 giây và thời gian chờ là 4 giây, do đó:
Trên RTT thấp, ping sẽ được gửi với khoảng thời gian 1 giây.
Trên RTT> 4, ping sẽ được gửi với khoảng thời gian 4 giây (hoặc 5, không chắc chắn) và tất cả sẽ được báo cáo là không thành công, giống như khi máy chủ không phản hồi.


1
+1 cho -Otùy chọn, có mặt và hoạt động tốt trong Ubuntu đáng tin cậy (& Linux Mint 17.2) từ gói iputils-ping phiên bản 3: 20121221-4ubfox1.1
Xen2050

11

Bỏ đi một phần câu trả lời của EvgEnZh, nhưng với phiên bản của riêng tôi:

ping -O -q 8.8.8.8

Điều đó làm cho nó in một tin nhắn khi một câu trả lời mất quá nhiều thời gian hoặc không bao giờ quay lại ( -O) và ngăn chặn các tin nhắn khi chúng quay lại ( -q). Kết quả là bạn chỉ nhận được đầu ra khi các gói bị mất. Điều này có thể làm cho việc tìm kiếm các vấn đề không liên tục trở nên dễ dàng hơn nhiều bằng cách làm cho nó để bạn không phải lọc qua một đống tin nhắn "nó đã hoạt động" cho một vài nơi mà nó bị hỏng.


Lưu ý rằng -O kích hoạt chỉ có nghĩa là độ trễ cao hơn dự kiến. Điều đó thường chỉ ra một vấn đề thực sự, nhưng không phải lúc nào cũng vậy. Nhật ký mà tôi đã đăng trong câu trả lời của mình đã có được trên một kết nối GPRS yếu, và mặc dù trong hơn 2 phút tôi chỉ bắt được câu trả lời ngoài đơn đặt hàng, có rất nhiều câu trả lời đến "trễ". Kết nối nhảm nhí đã bị choáng ngợp một vài lần, báo cáo một số ping bị mất liên tiếp, và sau đó tất cả chúng đều đến sau vài giây. Kết nối vẫn đáng tin cậy (có thể tôi đã xử lý việc truyền lại nội bộ GPRS, tôi không biết), chỉ là một nỗi đau cực kỳ khi sử dụng ngay cả khi truy cập SSH.
EvgEnZh

3

Có lẽ ping -flà phù hợp với bạn. Từ hướng dẫn ping:

-f

Lũ ping. Đối với mỗi ECHO_REQUEST được gửi một khoảng thời gian ''. '' Được in, trong khi mãi mãi ECHO_REPLY nhận được một khoảng lùi được in. Điều này cung cấp một màn hình nhanh chóng về số lượng gói tin đang bị hủy. Nếu khoảng thời gian không được đưa ra, nó đặt khoảng thời gian bằng 0 và xuất ra các gói nhanh như khi chúng quay lại hoặc một trăm lần mỗi giây, tùy theo mức nào nhiều hơn. Chỉ siêu người dùng mới có thể sử dụng tùy chọn này với khoảng không.

Cứ 1 tiếng vang thì mỗi giây nó sẽ như thế ping -i 1 -f 8.8.8.8


Không chắc đó có phải là một tính năng mới hay không, tôi có thể thấy các lệnh ping thất bại.
王子 1986

Lựa chọn nào bạn đã sử dụng để báo cáo lỗi thất bại? Thông điệp nào bạn nhận được cho một ping thất bại?
Daniel Yuste Aroca

Trong khi tôi chỉ sử dụng ping, thông báo giống như $ ping 172,18.1.12 PING 172,18.1.12 (172,18.1.12) 56 (84) byte dữ liệu. Từ 172.18.1.224 icmp_seq = 1 Destination Host Unreachable từ 172.18.1.224 icmp_seq = 2 Destination Host Unreachable từ 172.18.1.224 icmp_seq = 3 Destination Host Unreachable
王子1986

2
"Máy chủ đích không thể truy cập" không giống như thời gian chờ ping
ndemou 17/1/2015

ping -f không phải là câu trả lời, vì nó không để lại một kỷ lục. Điều cần thiết là một loại đường cho ping thành công và khác với lỗi, vì vậy người ta có thể biết ngay (trong tình huống dịch vụ không liên tục) tần suất và thời gian mất điện là bao lâu.
Silvio Levy

0

Ngay cả với tùy chọn -v, ping cũng không làm điều đó. Xem câu hỏi này . Nhưng nếu điều này thực sự quan trọng (hoặc thú vị) đối với bạn, bạn có thể tải xuống nguồn, sửa đổi mã để bao gồm một cuộc gọi printf phù hợp. Một nơi tốt để làm điều đó là ở cuối phương thức 'send_probe' (dòng 619 ngày 12.10) ...

Đầu tiên bạn lấy nguồn

apt-get source iputils
cd iputils*

Chỉnh sửa

gedit ping.c

Xây dựng và cài đặt gói đã tạo ...

apt-get install libsysfs-dev
dpkg-buildpackage

Tôi muốn làm điều này (và upvote câu trả lời này 10 lần) nhưng phải thiếu một cái gì đó. Tôi đang làm việc theo sudo -s. Sau khi chỉnh sửa ping.c, nếu tôi thử "làm" tôi nhận được "lỗi nghiêm trọng: sys / ability.h: Không có tệp nào như vậy". Nếu tôi làm theo hai dòng tiếp theo trong câu trả lời (apt-get install và dpkg -...) tôi không gặp lỗi nhưng tôi không biết nơi thực thi được đặt. Tệp thực thi cũ (/ bin / ping) vẫn còn đó - Tôi biết nó đã cũ từ dấu thời gian và vì nó không hoạt động khác đi.
Silvio Levy

-1

Cảm ơn tất cả các câu trả lời. Có vẻ như ping ub Ubuntu mới nhất có thể hiển thị ping không thành công.

Cảm ơn một lần nữa.


1
Không, không (ít nhất là cho đến năm 2015-tháng 1) "Máy chủ đích không thể truy cập" không giống như thời gian chờ ping
ndemou

Tại sao đây là câu trả lời được chấp nhận? ping -O -q 8.8.8.8là con đường để đi
theV0ID
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.