Created
November 16, 2023 21:57
-
-
Save smiell/66badaa658cf0e01cc77a015f9106673 to your computer and use it in GitHub Desktop.
check3GConnection.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Sprawdź stan połączenia 3G | |
status=$(sudo sakis3g status) | |
# Sprawdź, czy połączenie jest aktywne | |
if [[ "$status" == "E3131 connected to Orange (26003)" ]]; then | |
echo "Połączenie 3G jest aktywne. Sprawdzanie dostępności internetu..." | |
# Sprawdź dostępność internetu przez ping | |
if ping -c 1 1.1.1.1 &> /dev/null; then | |
echo "Dostęp do Internetu potwierdzony. Zakończono." | |
exit 0 | |
else | |
echo "Dostęp do Internetu niedostępny. Kontynuowanie próby nawiązania połączenia..." | |
fi | |
fi | |
echo "Brak połączenia 3G. Próba nawiązania połączenia..." | |
# Pętla prób nawiązania połączenia z przerwą 10 sekund między próbami | |
while true; do | |
# Nawiązywanie połączenia 3G | |
sudo sakis3g connect --console APN="internet" APN_USER="internet" APN_PASS="internet" USBINTERFACE="0" | |
# Poczekaj 10 sekund przed kolejną próbą | |
sleep 10 | |
# Sprawdź stan połączenia po ponownej próbie | |
status=$(sudo sakis3g status) | |
# Sprawdź, czy połączenie zostało pomyślnie nawiązane | |
if [[ "$status" == *"connected"* ]]; then | |
echo "Połączenie 3G zostało pomyślnie nawiązane. Sprawdzanie dostępności internetu..." | |
# Sprawdź dostępność internetu przez ping | |
if ping -c 1 1.1.1.1 &> /dev/null; then | |
echo "Dostęp do Internetu potwierdzony. Zakończono." | |
exit 0 | |
else | |
echo "Dostęp do Internetu niedostępny. Kontynuowanie próby nawiązania połączenia..." | |
fi | |
else | |
echo "Nie można nawiązać połączenia 3G. Kontynuowanie próby nawiązania połączenia..." | |
fi | |
done |
nie ma jak przetestować ale powinno działać, wg. twojego skryptu, czyli w pętli while sprawdź (check ustawiony na 1 by wymusić pętle) i jeżeli kod zwrócony jest 1 czyli brak połączenia, wykonaj próbe nawiązania i wykonaj pętle czyli na początku sprawdź połączenie po wykonanje próbie i jeżeli jest to koniec. Skrypt można wrzucić do crona żeby sprawdzał np. co minute.
#!/bin/bash
#
checkstatus() {
status=$(sudo sakis3g status)
if [[ "$status" == *"connected"* ]]; then
echo "Połączenie 3G zostało pomyślnie nawiązane. Sprawdzanie dostępności internetu..."
if ping -c 1 -W 1 1.1.1.1 &> /dev/null; then
echo "Dostęp do Internetu potwierdzony. Zakończono."
return 0
else
echo "Dostęp do Internetu niedostępny. Kontynuowanie próby nawiązania połączenia..."
return 1
fi
else
echo "Nie można nawiązać połączenia 3G. Kontynuowanie próby nawiązania połączenia..."
return 1
fi
}
#
#
#
check=1
while [[ $check -gt 0 ]];do
checkstatus
check=$?
if [[ $check -gt 0 ]];then
sudo sakis3g connect --console APN="internet" APN_USER="internet" APN_PASS="internet" USBINTERFACE="0"
sleep 5
fi
done
można dodać limit do ograniczenia liczby nieudanych prób
check=1
limit=10
while [[ $check -gt 0 && $limit -gt 0 ]] ;do
checkstatus
check=$?
if [[ $check -gt 0 ]];then
sudo sakis3g connect --console APN="internet" APN_USER="internet" APN_PASS="internet" USBINTERFACE="0"
sleep 5
fi
limit=$((limit-1))
done
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
pętla while mogłaby sprawdzać warunek
$? -gt 0
poza tym sam ping działa szybko ale gdy host nie jest dostępny to już jest kilka sekund
i dodanie parametru
-W 1
skróci czas