Skaner portów w bashu
Posiadając wyłącznie basha, bez dodatkowych narzędzi możemy zestawić połączenie na dowolnym porcie UDP bądź TCP z wybranym hostem wykorzystując pseudourządzenia /dev/tcp/[host]/[port] oraz /dev/udp/[host]/[port]. Tu warto dodać, że nie są to urządzenia dostarczane przez kernel, lecz jest to konstrukcja wykorzystywana przez basha. Jeśli port, na który staramy się zrobić połączenie nie jest dostępny, bash wyświetli odpowiedni błąd, natomiast nie interesuje nas jego treść, lecz fakt czy się udało zestawić połączenie czy nie.
Wykorzystując polecenie timeout z pakietu coreutils jesteśmy w stanie ograniczyć czas oczekiwania na połączenie - w naszym wypadku jest to jedna sekunda (oczywiście nasz skaner zadziała również bez niego, ale trzeba będzie zaakceptować długi czas oczekiwania w niektórych wypadkach lub inaczej rozwiązać kwestię timeoutu). Jeśli się uda, wykorzystujemy operator && (and), by wyświetlić dobrą wiadomość, w innym wypadku skrypt przejdzie do operatora || (or), komunikując, że port niedostępny.
Wykorzystanie takiego skanera mogłoby wyglądać następująco: