Wygląda na to, że mój serwer Raspberry Pi traci połączenie Wi-Fi po przypadkowym czasie i jakoś nie jest w stanie automatycznie odzyskać.
Zwykle ponowne uruchomienie ręczne rozwiązuje problem.
Chciałbym, aby zrestartował się automatycznie, jeśli nie będzie Wi-Fi po około 30 minutach. Jak mogę to zrobić?
wifi
raspberry-pi
raspbian
reboot
Zacisk
źródło
źródło
Odpowiedzi:
To jest w zasadzie odpowiedź Warwicka, tylko instrukcje krok po kroku.
Utwórz następujący skrypt powłoki w folderze domowym:
check_inet.sh
Zmień uprawnienia, aby można je było wykonać
Edytuj
/etc/crontab
za pomocąsudo
i dodaj następujący wiersz (zastąpyourname
rzeczywistą nazwą użytkownika):źródło
Jednym ze sposobów byłoby umieszczenie wpisu w cronie roota, który uruchamia skrypt co 30 minut. Skrypt przetestuje połączenie WIFI, być może za pomocą
ping
, i zapisze wynik w pliku w / tmp - 1 dla połączenia istnieje, 0 jeśli nie ma. Kolejne iteracje skryptu sprawdziłyby ten plik, a jeśli byłby 0, a połączenie WIFI było nadal złe, uruchominit 6
polecenie.źródło
Myślę, że rozwiązanie hololeap działa.
Moje rozwiązanie sprawdza co N minut (w zależności od konfiguracji crontab), czy działa połączenie sieciowe. Jeśli kontrola się nie powiedzie, śledzę awarię. Gdy liczba awarii wynosi> 5, próbuję zrestartować Wi-Fi (możesz także ponownie uruchomić Raspberry, jeśli restart Wi-Fi nie powiedzie się, sprawdź komentarze).
Oto repozytorium GitHub zawsze zawierające najnowszą wersję skryptu: https://github.com/ltpitt/bash-network-repair-automation
Oto, zgodnie z ogólną polityką stackexchange (wszystkie odpowiedzi nie powinny zawierać tylko linków), również plik network_check.sh, skopiuj i wklej go w dowolnym folderze, który lubisz, instrukcje instalacji są w komentarzach skryptu.
edytuj 26.01.2018: Usunąłem pliki tymczasowe, aby skrypt mógł działać w pamięci i uniknąć pisania na karcie SD Raspberry.
źródło
ifdown
aifup
może naprawiając sieć, a może nie. …………………………………………………………………………… Jeśli coś źle zrozumiałem, proszę, wytłumacz mi to. … (Ciąg dalszy)Zmodyfikowałem skrypt Pitto dla mojej bramy multitech MTTA LoraWAN (bez fping). Dodałem również plik dziennika.
źródło
ifupdown
jeśli go nie używasz? (2) Dlaczego zmieniłeśgateway_ip
zmienną na stałą zakodowaną na stałe?network_check_tries_file
pliku (gdy sięping
nie powiedzie), nie zwiększanetwork_check_tries
zmiennej. … (Ciąg dalszy)network_check_tries
równą 0, 1, 2, 3, 4, 5 i 6 - i tylko przy siódmym wywołaniu (network_check_tries
równym 6)if [ "$network_check_tries" -gt 5 ]
test się powiedzie. Prawdopodobnie jest to prawidłowe zachowanie. O ile skrypt wie, sieć mogła przestać działać o 00:04:59, więc potrzeba siedmiu kolejnych awarii, aby mieć pewność, że obejmiesz okres 30 minut. … (Ciąg dalszy)