Иногда возникает необходимость пропинговать множество узлов. Стандартная утилита ping умеет пинговать только один хост. Для того, чтобы пинговать множество хостов, стоит воспользоваться возможностями утилиты fping.
Согласно информации из Википедии:
fping — Свободно распространяемая утилита для UNIX систем. Проверяет доступность узлов в сети путем посылки ICMP ECHO_REQUEST пакетов. В отличие от стандартной утилиты ping, можно указать сколько угодно узлов в командной строке или указать текстовый файл со списком узлов. Вместо того, чтобы послать запрос ожидать ответа от одного узла, fping посылает запрос и переходит к следующему узлу по round-robin.
По умолчанию, когда узел ответил он удаляется из списка узлов для проверки, если же в течение заданного времени и/или количества попыток ответ не пришёл то такой узел считается недоступным. fping может посылать указанное или бесконечное количество запросов, так же, как это делает ping.
В отличие от ping, fping подразумевает использование его в скриптах, поэтому он выводит данные в форме удобной для разбора скриптом (parse).
fping относится к утилитам использующим ping sweep технологию. Вы должны понимать что пингование (сканирование) узлов или сетей которые вам не принадлежат может трактоваться как противозаконное действие.
Исходя из этой информации, можно отметить такие недостатки использования утилиты fping:
- мгновенный скачкообразный ICMP-флуд в ethernet-сегменте;
- мгновенная нагрузка на систему;
- в выводе утилиты fping имеют место быть не только IP-адреса ответивших хостов, т.е. его нужно еще дополнительно фильтровать;
- неприемлемое для больших сетей (несколько тысяч хостов) быстродействие.
Но в определенных ситуациях использование утилиты может пригодиться.
Выполним установку fping из системы портов:
# cd /usr/ports/net/fping && make install clean && rehash
После установки можно некоторыми возможностями утилиты.
Воспользовавшсь ключем -v, можно просмотреть версию утилиты:
# fping -v fping: Version 2.4b2_to $Date: 2002/01/16 00:33:42 $ fping: comments to david@remote.net
Чтобы ознакомиться с доступными для использования ключами, необходимо использовать ключ -h:
# fping -h Usage: fping [options] [targets...] -a show targets that are alive -A show targets by address -b n amount of ping data to send, in bytes (default 68) -B f set exponential backoff factor to f -c n count of pings to send to each target (default 1) -C n same as -c, report results in verbose format -e show elapsed time on return packets -f file read list of targets from a file ( - means stdin) (only if no -g specified) -g generate target list (only if no -f specified) (specify the start and end IP in the target list, or supply a IP netmask) (ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24) -i n interval between sending ping packets (in millisec) (default 25) -l loop sending pings forever -m ping multiple interfaces on target host -n show targets by name (-d is equivalent) -p n interval between ping packets to one target (in millisec) (in looping and counting modes, default 1000) -q quiet (don't show per-target/per-ping results) -Q n same as -q, but show summary every n seconds -r n number of retries (default 3) -s print final stats -S addr set source address -t n individual target initial timeout (in millisec) (default 500) -u show targets that are unreachable -v show version targets list of targets to check (if no -f specified)
Пример пингования сети 172.20.0.0/28:
# fping -g 172.20.0.0/28 172.20.0.1 is alive 172.20.0.5 is alive 172.20.0.9 is alive 172.20.0.12 is alive 172.20.0.13 is alive 172.20.0.0 is unreachable 172.20.0.2 is unreachable 172.20.0.3 is unreachable 172.20.0.4 is unreachable 172.20.0.6 is unreachable 172.20.0.7 is unreachable 172.20.0.8 is unreachable 172.20.0.10 is unreachable 172.20.0.11 is unreachable 172.20.0.14 is unreachable 172.20.0.15 is unreachable
Если использовать ключ -a, то в выводе утитилы будут присутствовать только доступные хосты:
# fping -ag 172.20.0.0/28 172.20.0.1 172.20.0.5 172.20.0.9 172.20.0.12 172.20.0.13
Для отображения времени отклика необходимо использовать ключ -e:
# fping -aeg 172.20.0.0/28 172.20.0.1 (0.05 ms) 172.20.0.5 (1.15 ms) 172.20.0.9 (1.18 ms) 172.20.0.12 (1.21 ms) 172.20.0.13 (0.92 ms)
Для формирования отчета необходимо использовать ключ -s:
# fping -saeg 172.20.0.0/28 172.20.0.1 (0.04 ms) 172.20.0.5 (1.09 ms) 172.20.0.9 (1.06 ms) 172.20.0.12 (1.06 ms) 172.20.0.13 (0.98 ms) 16 targets 5 alive 11 unreachable 0 unknown addresses 44 timeouts (waiting for response) 49 ICMP Echos sent 5 ICMP Echo Replies received 0 other ICMP received 0.04 ms (min round trip time) 0.84 ms (avg round trip time) 1.09 ms (max round trip time) 6.352 sec (elapsed real time)
Краткий обзор утилиты сделан, и ее возможности более-менее понятны.