web-dev-qa-db-fra.com

Comment activer / désactiver le haut débit mobile depuis un terminal?

J'utilise le modem USB ZTE sur Natty Narwhal. Tout fonctionne bien, mais parfois, il est déconnecté. Je souhaite écrire un script Shell qui reconnecte le haut débit mobile s'il est déconnecté ou si les données reçues sont inférieures à 20 Ko après 5 secondes de connexion.

Ma question est donc de savoir comment activer/désactiver le haut débit mobile? Comment vérifier les données reçues? et comment activer/désactiver le service réseau?

note: commandes de terminal uniquement Ou si vous pouvez écrire un script, je vous en serai très reconnaissant.

8
Rahul Virpara

J'ai créé un script Shell comme suit et l'ai mis dans Startup Applications et cela fonctionne à merveille! Je suis heureux avec cela, mais si vous pouvez l'améliorer, je vous en serai très reconnaissant.

#!/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
2
Rahul Virpara

Ouvrez la fenêtre du terminal et tapez:

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

Copiez et collez ensuite ceci (à modifier selon vos besoins):

Remarque: Remplacez le <Your Mobile Broadband Connection Name Here> par le nom de votre connexion.

#!/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

Modifiez les autorisations de ce fichier pour exécution:

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

Pour exécuter ce script a un service, faites:

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

Le script est enregistré en tant que service de démarrage du système afin que vous puissiez démarrer, arrêter ou vérifier le statut du script avec:

Sudo service mobile-broadband-connect start

Sudo service mobile-broadband-connect stop

Sudo service mobile-broadband-connect status

Redémarrez pour terminer l'installation et la connexion automatique.

  • Redémarrez votre système pour terminer l'installation.
  • Après le redémarrage, le périphérique USB est actif jusqu'à 60 secondes.
  • Lorsqu'elle est activée - La connexion haut débit mobile sera activée et connectée automatiquement.

Terminé ...

#!/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
1
tejas