Skrypt bash'a sprawdzający porty wychodzące.

Chciałbym Wam dzisiaj przedstawić bardzo krótki, jednak mam nadzieję, że jak najbardziej przydatny skrypt bashowski służący do sprawdzenia, które porty wychodzące są dostępne u nas  na domowym komputerze, bądź też na serwerze jeśli ktoś takowy posiada. W moim przypadku przyczyną, która bezpośrednio popchnęła mnie do napisania tego skryptu, była niemożność połączenia się z moim serwerem FTP, który jest skonfigurowany w trybie pasywnym. Okazało się, że mój dostawca internetu blokuje prawie wszystkie porty wychodzące. To może się przytrafić każdemu z nas, w większości przypadków w pracy a już szczególnie jeśli pracuje się w korporacji.

Działanie skryptu polega na próbie bądź próbach połączenia się za pomocą programu netcat z serwerem strony Outgoing Port Tester na pojedyńczym porcie bądź w zakresie portów dostarczonym w argumentach skryptu. W przypadku udanego połączenia na ekranie ukaże nam się komunikat :

success

natomiast w przypadku braku połączenia oto co zobaczymy na ekranie:

failed

a oto też poniższy skrypt:

Skrypt zaczynamy od wpisania w lini 1 tak zwanego shebang'a:"#!". Jest to wskazówka, który interpreter ma zostać użyty do uruchomienia skryptu, w naszym przypadku jest to bash. Linia 6 jest to wyrażenie regularne, które przeprowadza walidację paramentrów portu bądź portów wpisywanych przez użytkowinika z lini poleceń. Wyrażenie zinterpretuje poprawnie wartości od 0-65535.  Funkcja usage używana jest do wypisania informacji jak należy używać skryptu. Linie 22-29 odpowiedzialne są za przeprowadzenie sprawdzenia poprawności oraz ilości przekazywanych parametrów podanych przez użytkownika z lini poleceń. Na samym końcu w liniach 51-60 mamy pętlę while uruchamiającą program netcat dla każdego portu z podanego zakresu bądź dla pojedyńczego portu.

Dla wygody możemy sobie stworzyć dowiązanie symboliczne do naszego skryptu za pomocą komendy :

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.