Skocz do zawartości

Bash: Sprawdzanie Połączenia Z Internetem


kfr

Rekomendowane odpowiedzi

Witam. Chciałbym napisać skrypt w BASHu który sprawdza czy mam nawiązane połączenie z internetem za pomocą polecenia startadsl a jeśli nie to aby wykonywał się inny skrypt który napisałem (powiedzmy, że o nazwie XXX który jest umieszczony w katalogu YYY). Mój problem polega na tym, jak sprawdzić czy jest nawiązane połączenie z internetem (bo gdy czasem wracam do domu po pracy to mam kabel telefoniczny odłączony i jest zerwane połączenie).

 

Uruchomienie skryptu następowałoby na przykład przez polecenie "at now +2 hours"

Odnośnik do komentarza
Udostępnij na innych stronach

Nie rozumiecie mnie. Chodzi mi o to, żeby było sprawdzane czy jest NAWIĄZANE połączenie z INTERNETEM, a nie czy aplikacja jest odpalona. Jeśli mam odpalone połączenie i ktoś mi odłączy kabel telefoniczny, to aplikacja nie zostanie zakończona. Muszę wpisać ręcznie stopadsli dopiero ponownie startadsl po podłączeniu kabla bo nawet jeśli będe miał startadsl i odłączę kabel to startadsl i tak mi będzie zwracać wartość 1 (która oznacza, że połączenie już jest nawiązane). Nie zostanie ono automatycznie przywrócone po podłaczeniu kabla. Chodzi mi o to:

 

IF brak połączenia z internetem THEN stopadsl startadsl fi

IF połączenie jest nawiązane THEN nic nie rób fi

 

Chociażby pingnąć jakiś serwer który w miarę stabilny jest, jeśli pakiety są odebrane to znaczy, że połączenie jest nawiązane i nic skrypt dalej nie musi robić. Tylko jak sprawdzić jaka wartość jest pingiem zwracana aby zastosować to razem z IF? - to tylko taki mój mały pomysł tongue.gif

 

O. Mam:

 

"Jeśli ping nie odbierze żadnych pakietów odpowiedzi, to zakończy dzia

łanie z kodem wyjścia 1. W przypadku błędu kod ten wynosi 2. W przeciwnym

razie zwracane jest 0. Umożliwia to używanie kodu wyjścia do sprawdzania

czy hosty żyją, czy gryzą ziemię."

 

Więc próbuję napisać skrypt:

#!/bin/bash

T1="ping  www.wp.pl -c 2 "
T2="0"
if ["$T1"!= "$T2"]; then
stopadsl
echo "Czekaj..."
startadsl
echo "Przywrocono polaczenie z internetem"
fi

 

ale gdy chcę wykonać skrypt (któremu dałem uprawnienia chmod 755) dostaję wynik:

[kfr@KFR ~]$ ./sprawdz.sh
./sprawdz.sh: line 5: [ping  www.wp.pl -c 2 !=: command not found

 

Nie wiem gdzie błąd jest? I czy jest lepszy sposób na sprawdzenie czy połączenie jest aktywne? Bo ping może trochę sieć obciążać.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie mam teraz jak sprawdzić, ale zapis

T1="ping  www.wp.pl -c 2 "
T2="0"
if ["$T1"!= "$T2"]; then

jest IMO na 100% błędny.

Po 1-sze dlatego, że zamiast podwójnych cudzysłowów powinieneś użyć pojedyńczych w zmiennych, a po 2-gie, że pomiędzy nawiasem [ a resztą ważne są odstępy.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...