Tôi đang cố gắng viết một tập lệnh liệt kê tất cả các máy chủ trong mạng LAN của tôi (có khoảng 20 trong số chúng) và viết trạng thái ping bên cạnh mỗi máy chủ. Tôi có tập tin thuê DHCP, vì vậy tôi có tất cả các IP (giả sử 10.0.0.1, 10.0.0.2, v.v.), tất cả những gì tôi cần là trạng thái ping cho mỗi máy chủ.
Vì vậy, tập lệnh của tôi khởi chạy một ping duy nhất cho mỗi máy chủ:
ping -c 1 10.0.0.1
Thật không may, khi một máy chủ ngoại tuyến, ping mất nhiều thời gian để hết thời gian. Tôi đã kiểm tra man ping
, dường như có hai tùy chọn để đặt thời gian chờ là: -w deadline
và -W timeout
. Tôi nghĩ rằng tôi quan tâm đến cái sau.
Vì vậy, tôi đã thử điều này:
ping -c 1 -W 1 10.0.0.1
Nhưng chờ một giây trên mỗi máy chủ ngoại tuyến vẫn còn quá dài. Tôi đã cố gắng đặt nó xuống dưới một giây, nhưng dường như nó không tính đến tham số nào cả:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Có cách nào để đặt thời gian chờ thành giá trị thấp hơn không? Nếu không, có bất kỳ lựa chọn thay thế?
Biên tập
- HĐH là Debian Lenny.
- Các máy chủ tôi đang cố gắng ping thực sự là các điểm truy cập. Họ ở trên cùng một vlan và mạng con như người dùng (để đơn giản triển khai và thay thế). Đây là lý do tại sao tôi không muốn quét tất cả các mạng con (
ping -b
ví dụ với một ví dụ).
Chỉnh sửa # 2
Tôi chấp nhận fping
giải pháp (cảm ơn tất cả các câu trả lời khác). Lệnh này thực hiện chính xác những gì tôi đang tìm kiếm:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Lệnh này mất tối đa 500ms để hoàn thành và cung cấp cho tôi trạng thái ping của tất cả các máy chủ cùng một lúc:
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
Trên Debian Lenny, cài đặt không đáng kể:
aptitude update
aptitude install fping