Posiadanie aplikacji i urządzeń, które muszą się zalogować, wysyłać i odbierać dane do świata zewnętrznego, ma kluczowe znaczenie. Zatem posiadanie narzędzia, które umożliwia monitorowanie, gdy sieć spadnie, może pomóc w rozwiązywaniu problemów z sieci lub zatrzymaniu aplikacji przed wysłaniem wielu błędów dziennika.
W dzisiejszym samouczku zbudujemy prosty monitor sieciowy, który nieustannie monitoruje Twoją łączność z Internetem, wysyłając żądania ping do zewnętrznego zasobu. Skrypt, który utworzymy, będzie również zachowywać dzienniki, kiedy Internet spadnie i czas przestoju:
Wymagania projektu
Do tego projektu będziemy potrzebować tylko:
Logika projektu
Zanim zanurzymy się w części kodowania, omówmy i zrozumiemy, co staramy się osiągnąć:
Co to jest sieć w górę i przestoju?
Kiedy mówimy o sieci w górę i przestojach, rozumiemy okres, w którym połączenie sieciowe jest całkowicie niedostępne, a zatem nie możemy komunikować się z urządzeniami poza naszą siecią. Im dłużej Internet jest niedostępny, tym dłużej przestoju.
Jak określić przestoje
Teraz, gdy wiemy, czym jest przesto?"
Bez komplikowania naszego kodu możemy iść z ping. Ping to metoda, w której ciągle pingujemy niezawodny serwer-być może Cloudflare lub Google DNS-a następnie czekamy na odpowiedź.
Jeśli pingujemy serwer i nie ma odpowiedzi, zauważamy ten konkretny czas i kontynuujemy ping, dopóki nie otrzymamy ping i nie zauważymy czasu.
Mając różnicę czasową, możemy zauważyć, kiedy Internet był opuszczony i na jak długo.
Musimy również zachować ostrożność podczas pingowania jednego serwera, ponieważ możemy fałszywie pomylić ping jako atak DDOS, który może spowodować zablokowanie naszego adresu IP, co dałoby negatywne wyniki.
Oto wykres przepływowy wyjaśniający tę koncepcję:
Rozmowa jest tania; Zanurzmy się teraz w kodzie pokazującym, jak zaimplementować tę logikę:
Teraz pokaż mi kod
Jak zwykle w Python zaczynamy od zaimportowania wymaganych bibliotek. Następnie tworzymy plik dziennika w bieżącym katalogu roboczym.
Używamy biblioteki gniazda, aby wysłać żądanie na zewnętrzny adres IP w pierwszej funkcji. W tym przykładzie używamy Cloudflare Public DNS, który ma bardzo wysoki czas pracy. Mamy również port, a ponieważ jest to serwer DNS, użyj portu 53.
Następnie weryfikujemy, że mamy dostęp do katalogu plików dziennika i zrezygnujemy, jeśli nie mamy dostępu.
Następnym krokiem jest obliczenie czasu, w którym połączenie sieciowe spadło. Na koniec owijamy całą funkcjonalność w pętli, jak pokazano w poniższym kodzie.
Gniazdo importuJeśli uruchomisz ten skrypt, otrzymasz wyjście podobne do tego pokazanego poniżej:
Wniosek
Korzystając z powyższego skryptu, możemy monitorować, gdy połączenie sieciowe zostanie utracone i stale logowanie się, aż będzie dostępne. Ten prosty skrypt jest otwarty na ulepszenia. Zapraszam do dostosowania kodu, aby pasowały do twoich potrzeb i rozwinąć go.