Terminal pogryzł człowieka: fping

Osoby piszące przeróżne skrypty jak i osoby po prostu ciekawskie, potykają się niekiedy o takie prozaiczne rozwiązania jak np. watchdog kontrolujący dostępność konkretnych adresów IP lub hostów. Oczywiście pierwsze co się ciśnie pod palce podczas pisania skryptu to komenda ping i odpowiednie parsowanie wyników jej działania. Jednak zamiast wymyślać koło na nowo i pisać skomplikowane epopeje w Bashu, można skorzystać z fping.

Narzędzie fping znajdziemy w standardowych repozytoriach większości dystrybucji. Zasada jego działanie różni się od zwykłego pinga w sposób zasadniczy – fping jest dedykowany masowemu testowaniu wielu hostów na raz. Na dodatek, przejrzysty wynik działania tej komendy daje się w banalny sposób „obrobić” w naszych skryptach. A przecież wszyscy lubimy upraszczać sobie życie.

Jak to działa? Nic skomplikowanego:

$# fping onet.pl wp.pl interia.pl google.com
onet.pl is alive
wp.pl is alive
interia.pl is alive
google.com is alive

W domyślnym trybie fping poinformuje nas po prostu, czy dane hosty odpowiadają na wysłane zapytanie icmp. Nic ciekawego? Ciekawiej to się robi dalej. Fping możemy nakarmić listą hostów zapisaną w jakimś pliku tekstowym:

$# fping < serwery.txt wp.pl is alive onet.pl is alive interia.pl is alive google.com is alive

Jeżeli to nam nie wystarcza, możemy nakazać programowi wyświetlić adresy IP odpytanych hostów (lub na odwrót) i czas wędrówki pakietu:

$# fping -e -A < serwery.txt 212.77.98.9 is alive (33.4 ms) 213.180.141.140 is alive (20.5 ms) 217.74.65.23 is alive (11.1 ms) 173.194.112.71 is alive (44.5 ms)

Gdyby i to była niewystarczająca forma informacji jaką chcemy otrzymać, można wspomóc się innymi opcjami fpinga. Jest to całkiem pokaźna lista i znajdziemy na niej np.:

  • -a : wyświetlanie informacji nt. wszystkich hostów,
  • -u : tylko hostów niedostępnych,
  • -A : wyświetlanie adresów IP zamiast nazw,
  • -d : wyświetlanie nazw zamiast adresów IP,
  • -c ilość: ilość wysyłanych pakietów icmp,

... i wiele wiele innych