Jak włączyć / wyłączyć mobilny Internet szerokopasmowy z terminala?

8

Używam modemu USB ZTE na Natty Narwhal. Wszystko działa dobrze, ale czasem się rozłącza. Chcę napisać skrypt Shell, który ponownie łączy mobilny Internet szerokopasmowy, jeśli jest rozłączony lub odebrane dane mają mniej niż 20 KB po 5 sekundach połączenia.

Więc moje pytanie brzmi: jak włączyć / wyłączyć mobilny Internet szerokopasmowy? Jak sprawdzić otrzymane dane? i jak włączyć / wyłączyć usługę sieciową?

uwaga: tylko komendy terminala Lub jeśli potrafisz pisać skrypt, będę bardzo wdzięczny.

Rahul Virpara
źródło

Odpowiedzi:

8

Otwórz okno terminala i wpisz:

sudo gedit /etc/init.d/mobile-broadband-connect

Następnie skopiuj i wklej to (Zmień na swoje potrzeby):

Uwaga: Zamień <Your Mobile Broadband Connection Name Here>na nazwę swojego połączenia.

#!/bin/bash

case "$1" in
start)
      echo "Starting Mobile Broadband Connection."
      while true; do
        # testing...to see if gsm is on the list of active devices
        LC_ALL=C nmcli -t -f TYPE,STATE dev | grep -q "^gsm:disconnected$"
        if [ $? -eq 0 ]; then
            break
        else
         # not connected, sleeping for a second
            sleep 1
        fi
      done
      # now once GSM modem shows up, run these commands
      nmcli -t nm wwan on
      nmcli -t con up id <Your Mobile Broadband Connection Name Here>
;;
stop)
      echo "Stopping Mobile Broadband Connection."
      nmcli -t con down id <Your Mobile Broadband Connection Name Here>
      nmcli -t nm wwan off
;;
status)
      # Check to see if the process is running with Network Manager dev status
      nmcli -p dev
;;

*)
      echo "Mobile Broadband Startup Service"
      echo $"Usage: $0 {start|stop|status}"
      exit 1
esac
exit 0

Zmień uprawnienia tego pliku do wykonania:

sudo chmod +x /etc/init.d/mobile-broadband-connect

Aby uruchomić ten skrypt ma usługę, wykonaj:

sudo update-rc.d mobile-broadband-connect defaults

Skrypt jest zarejestrowany jako usługa uruchamiania systemu, dzięki czemu można uruchomić, zatrzymać lub sprawdzić status skryptu za pomocą:

sudo service mobile-broadband-connect start

sudo service mobile-broadband-connect stop

sudo service mobile-broadband-connect status

Uruchom ponownie, aby zakończyć instalację i automatyczne połączenie.

  • Uruchom ponownie system, aby zakończyć instalację.
  • Po ponownym uruchomieniu urządzenie USB może działać do 60 sekund.
  • Gdy aktywne - mobilne połączenie szerokopasmowe zostanie aktywowane i automatycznie połączone.

Gotowy ...

Octávio Filipe Gonçalves
źródło
po zainstalowaniu tej usługi trwa wieczność. To znaczy, nie wyłącza się, kiedy wyłączam laptopa. Utknęło na logo ubuntu. Próbowałem sudo rm /etc/init.d/mobile-broadband-connect && sudo update-rc.d mobile-broadband-connect removei usunąłem tę usługę. Potem wszystko poszło dobrze. Jak się tego pozbyć?
Rahul Virpara
Nie stawiaj tego jako usługi. Uruchom ręcznie.
Octávio Filipe Gonçalves
czy jeśli uruchomię go ręcznie, to czy nadal będzie działał w tle i połączy się, jeśli mobilny Internet szerokopasmowy zostanie odłączony?
Rahul Virpara
2

Stworzyłem skrypt powłoki w następujący sposób i umieściłem go, Startup Applicationsi działa jak urok! Cieszę się z tego, ale jeśli możesz to poprawić, będę bardzo wdzięczny.

#!/bin/bash

while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep -q "^gsm:disconnected$"
    if [ $? -eq 0 ]; then
        #jdownloader is still in the download status so stop it because
        #internet is disconnected and jdownloader won't resume download 
        #when connected again
        #jdownloader --stop-download
        #sometimes I can not get connected after disconnection when 
        #I click on <name of the network connection>. I have to disable
        #and enable Mobile Broadband
        nmcli -t nm wwan off
        sleep 1
        nmcli -t nm wwan on
        sleep 1
        nmcli -t con up id "Tata Docomo Internet"
        #wait approximately 15 sec to get connected
        #if anyone can add better command to check for it just comment it :-p 
        sleep 15
        #now connected to internet so start download
        #jdownloader --start-download
    fi
    #it does not worth keep it checking every millisecond.
    #my connection will be reestablished within 5-15 seconds
    sleep 2
    #if anyone can code it better please feel free to comment
    #TO-DO:: check for data received. if data < 15 KB after 20 seconds of connection
    #reconnect mobile broadband connection  
done
Rahul Virpara
źródło
1
#!/bin/sh 
echo "Starting Mobile Broadband Connection. Tej"
      while true; do
        # testing...to see if gsm is on the list of active devices
        LC_ALL=C nmcli -t -f TYPE,STATE dev | grep -q "^gsm:disconnected$"
        if [ $? -eq 0 ]; then
            break
        else
         # not connected, sleeping for a second
            sleep 1
        fi
      done
      # now once GSM modem shows up, run these commands

  while true; do
  # Enable Mobile Broadband
nmcli -t nm wwan on

  # Connect to network
nmcli -t con up id "BSNL/CellOne New GPRS/3G 1"

  # Check status if connected or not
nmcli -f device,state -t dev | grep ttyACM0 | awk -F':' '{print $2}' | { read status; }

echo $status;

if [$status == "connected"]; then
    break
else
     # not connected, sleeping for a second
    nmcli -t nm wwan off
            sleep 1
 fi
  done
tejas
źródło