Raspberry (Linux) internet watchdog

Stworzyłem skrypt, który monitoruje, czy na Twoim urządzeniu działa połączenie internetowe. Jeśli nie, zrestartuje router, a jeśli problem będzie występował nadal, urządzenie uruchomi się ponownie. W ten sposób zapewnisz stabilność dostępu do swojej sieci i urządzenia w przypadku awarii sieci. Dowiesz się jak stworzyć OpenWrt watchdog lub router watchdog wykorzystując prosty skrypt napisany w Pythonie.

Wymagania

  • Urządzenie oparte na systemie Linux (takie jak Raspberry Pi) z zainstalowanym Pythonem 3
  • Jeden z obsługiwanych routerów: Cisco EPC3925, Nokia G-240W-C lub inny z zainstalowanym OpenWrt
  • Następujące pakiety Pythona zainstalowane na urządzeniu: http.client, requests, paramiko (tylko dla Cisco EPC3925)
  • Dane dostępowe do Twojego urządzenia: login i hasło
  • Jeśli używasz routera z OpenWrt, upewnij się, że ma on włączony dostęp SSH i nadane hasło
  • Skrypt zapisuje datę ostatniego restartu do pliku w swojej lokalizacji, aby uniknąć pętli restartu, więc upewnij się, że będzie miał uprawnienia do zapisu w swojej lokalizacji

Instalacja

Zainstaluj wymagane pakiety Pythona.

pip3 install http.client requests paramiko

Sklonuj repozytorium do dowolnego katalogu na swoim urządzeniu, np. do katalogu domowego.

cd
git clone https://github.com/paulomac1000/Raspberry-Internet-Watchdog

Przejdź do katalogu skryptu.

cd Raspberry-Internet-Watchdog

Skonfiguruj skrypt główny.

nano watchdog.internet.py

Przejdź do linii 44 (do poniższego kodu) i odkomentuj wywołanie skryptu restartu Twojego routera.

# Uncomment line for Your router and update access data in selected file
#os.system('python3 Cisco_EPC3925.py')
#os.system('python3 Nokia_G-240W-C.py')
#os.system('python3 OpenWrt.py')

Zamknij plik używając ctrl+x i zapisz zmiany.

Następnie skonfiguruj skrypt, który zrestartuje router:

Jeżeli używasz routera Cisco EPC3925:

Otwórz skrypt Cisco_EPC3925.py

nano Cisco_EPC3925.py

I ustaw odpowiednie dane dostępowe, takie jak adres URL, login i hasło. Dane podane w skrypcie są danymi domyślnymi dla routerów udostępnianych przez operatora Inea.

url = "192.168.0.1"
username = "homeu"
password = "homep" 

Zamknij plik używając ctrl+x i zapisz zmiany.

Jeżeli używasz routera Nokia G-240W-C:

Tutaj sprawa jest nieco bardziej skomplikowana. Po zalogowaniu musisz zdobyć tokeny autoryzacyjne wygenerowane przez router. Nie zniechęcaj się, łatwo do nich dotrzeć. Niestety nie mogłem przepisać logiki, która je wygenerowała, ponieważ korzystała z pakietu niedostępnego dla Pythona.

Oczywiście, jeśli używasz routera operatora Inea z domyślnym hasłem, nie musisz nic zmieniać w skrypcie. W przeciwnym wypadku:

  • przejdź do strony logowania routera,
  • otwórz narzędzia deweloperskie (klawisz F12 w chrome) i wybierz kartę „Network”,
  • zaznacz checkbox Preserve logs w narzędziach deweloperskich,
  • zaloguj się do routera,
  • znajdź request o nazwie login.cgi idący pod adres http://192.168.1.1/login.cgi i otwórz go,
  • na samym dole zobaczysz wartości „Form Data”, skopiuj wartości parametrów ct i ck.

Otwórz skrypt Nokia_G-240W-C.py

nano Nokia_G-240W-C.py

I ustaw odpowiednie dane dostępowe, takie jak url, ct i ck. Dane podane w skrypcie są danymi domyślnymi dla routerów udostępnianych przez operatora Inea.

url = "192.168.1.1"
ct = "2Awp6Rntn24AtFDkwCioWarQFk734lYGf0lIz6EoJdv1E741j-_mChCqgJzmSby4OvHDpyTcIs87PeKeKxkEpRS7vYEoLFX3_LhVuF4fWE9SP8pfhR8I-jsynfwfpGDWqX5mXBClQgnjudj0_evkf0UJZYCaiZgmEI3G8OwV5BqP5nDreYL1RmS_9xNgfjdMu6LTALtiCqrg_0yi-XF4Kr8HAsK0UvDXugmk8nNoi8eDWk_ELGVwDcuJtxsRgbzN8yJXvqJD_Iqnf_A1G7yq7T9vLRCYb5loHljS5GGC7dI"
ck = "mqdh47u9tZ4pMNyMkK5bSOvEdN8XgeRwplu24qLG7fwDPRcxNPQMy0HVbp0sXb7cSqe6EUoEMIHt1btDghNp16AogCS531fNeBqT4Vt1bVnONu6cIash2yvjOCZtInruarFsuerxsxv8K7-80cYTvQKgdsqSUH2CZ0BSGH_D7yQ."

Zamknij plik używając ctrl+x i zapisz zmiany.

Jeżeli używasz innego routera z zainstalowanym OpenWrt:

Otwórz skrypt OpenWrt.py

nano OpenWrt.py

I ustaw odpowiednie dane dostępowe, takie jak adres URL, login i hasło. Upewnij się, że masz włączony dostęp SSH i ustawione hasło.

url = "192.168.1.1"
username = "root"
password = "password"

Zamknij plik używając ctrl+x i zapisz zmiany.

Użycie

Aby wykonać skrypt, uruchom go z wiersza poleceń.

python3 watchdog.internet.py

Aby skrypt działał automatycznie, dodaj go do tabeli crontab.

crontab -e

I wywołaj skrypt. Następujące polecenie będzie uruchamiać skrypt co 15 minut.

*/15 * * * * python3 /home/pi/apps/Raspberry-Internet-Watchdog/watchdog.internet.py