Od kilku miesięcy firma aero2, na mocy licencji na pasmo częstotliwości 900 MHz, umożliwia bezpłatne korzystanie z internetu w technologii HSDPA i LTE. Przepustowość takiego połączenia ograniczona jest do 256 kb/s, a długość sesji do godziny. Do podstawowych i prostych działań w sieci taka przepustowość powinna wystarczyć, szczególnie gdy połączy się ją z lokalnym serwerem cache, jak squid. Problemem może być natomiast cogodzinne zrywanie sesji. Jest na to jednak pewien sposób sprawdzony na Ubuntu 11.10 Onereic Ocelot.
NetworkManager nie wykrywa zerwania sesji aero2. Pomimo zaznaczenia opcji automatycznego nawiązywania połączenia, modem nie łączy się ponownie. Do rozwiązania tego problem wystarczy prosty skrypt, który będzie sprawdzał stan połączenia i wymuszał na Network Managerze połączenie się z aero2 w przypadku zakończenia sesji. Skrypt ten powinien działać automatycznie (najlepiej w cronie co minutę) z konta użytkownika uprawnionego do kontroli połączeń w Network Managerze.
#!/bin/bash ping -c 1 8.8.8.8 >/dev/null ret=$? if [ "${ret}" -eq "1" ]; then nmcli con down id aero2 else exit fi sleep 8 ping -c 1 8.8.8.8 >/dev/null ret=$? if [ "${ret}" -eq "1" ]; then nmcli con down id aero2 nmcli con up id aero2 fi
Skrypt ten sprawdza najpierw, czy jest połączenie z internetem. Do tego celu wykorzystuje jeden z serwerów DNS Google, o adresie IP 8.8.8.8. Można w tym miejscu wybrać dowolny inny serwer odpowiadający na pingi. Jeśli komenda ping zwróci błąd, skrypt próbuje wyłączyć połączenie z aero2 (aero2 w tym skrypcie jest nazwą połączenia w NetworkManagerze). Następnie czeka 8 sekund i sprawdza połączenie ponownie. Jeśli w tym czasie Network Manager nie nawiązał utraconego połączenia automatycznie, skrypt próbuje ponownie zakończyć to połączenie i następnie ręcznie się połączyć.
U mnie skrypt niestety nie działa. Podejrzewam, że przyczyną jest iż po utraceniu połączenia sytem nie może podłączyć z powrtoem modemu:
promyk@T61:~/skrypty$ nmcli con up id aero2
Błąd: nie odnaleziono odpowiedniego urządzenia: nie odnaleziono urządzenia dla połączenia "aero2"
promyk@T61:~/skrypty$ nmcli con up id aero2
Błąd: nie odnaleziono odpowiedniego urządzenia: nie odnaleziono urządzenia dla połączenia "aero2"
promyk@T61:~/skrypty$ nmcli dev status
URZĄDZENIE TYP STAN
eth0 802-3-ethernet niedostępne
wlan0 802-11-wireless niedostępne
ttyUSB0 gsm rozłączono "
A nie prościej w cronie uruchamiać co 59 minut:
nmcli con down id aero2
sleep 3
nmcli con up id aero2
ja zrobiłem inaczej… w kronie restartuje NetworkManagera co 50 minut, a w NetworkManagerze mam ustawione że ma się łączyć automatycznie…
chula – polecam….
Jaka komenda restartuje NetworkManagera ?