Ma question peut sembler étrange, mais cela a du sens si votre connexion Internet continue de ne plus fonctionner toutes les quelques heures.
Je veux savoir comment je peux redémarrer le gestionnaire de réseau en utilisant un script Shell.
maintenant, je sais que Sudo service network-manager restart
est ce que vous faites dans le terminal, mais malheureusement, cela ne fonctionne pas avec un script Shell.
Des idées ?
Non, ce n'est pas bizarre du tout, moi aussi, je rencontre beaucoup de problèmes de connectivité lorsque j'utilise mon modem USB.
Voici comment vous le faites
redémarrage du gestionnaire de réseau du service gksu
enregistrez-le dans un fichier avec l'extension .sh et accordez le droit d'exécuter un fichier exécutable en faisant un clic droit >> propriétés >> autorisations
Moi aussi j'ai eu un problème très similaire. Mon réseau Internet est tellement instable que, en cas de fluctuations de courant, le modem est mis hors ligne et ne peut être vu que si vous débranchez le modem et que vous le rebranchez. Sinon, vous pouvez utiliser usb_modeswitch. Donc, j'ai pris le script ci-dessus et l'a modifié pour faire les deux tâches.
#!/bin/bash
while true; do
#Anything less than a solid connection reboots the USB modem
LC_ALL=C nmcli -t -f TYPE,STATE dev | grep -q "^cdma:connected$"
if [ ! $? -eq 0 ]; then
#Reset USB Modem (12d1:1001 will have to be changed to match your modem)
Sudo usb_modeswitch -R -v 12d1 -p 1001
#Wait 20 Seconds before trying to bring up the Broadband connections
sleep 20
nmcli -t nm wwan on
#Wait Another 20 Seconds then test if the connection came up on its own as it is set to auto-connect
sleep 20
LC_ALL=C nmcli -t -f TYPE,STATE dev | grep -q "^cdma:disconnected$"
if [ $? -eq 0 ]; then
nmcli -t con up id "Zantel connection"
sleep 15
fi
#wait approximately 15 sec to get connected
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
Merci!
nmcli
est un outil de ligne de commande permettant de contrôler NetworkManager et d'obtenir son statut.
J'ai également eu le même problème lors de l'utilisation du haut débit mobile.
J'ai créé un script shell comme suit. Enregistrez-le, accordez-le et exécutez-le dans les applications de démarrage. Il fonctionne à merveille! Il se connectera automatiquement si la connexion est interrompue. C'est ce que je voulais.
Vous devez modifier l'identifiant du réseau (pour moi, il s'agit de "Tata Docomo Internet"
). Remplacez "Tata Docomo Internet"
par le nom de votre nom de connexion haut débit mobile.
#!/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
C'est une meilleure solution au problème précédent.
J'ai créé 2 scripts le premier est ceci ...
Sudo /home/{your user name}/UMM.sh
En lançant ce "In Terminal" si vous créez une icône, vous pouvez entrer votre mot de passe Sudo.
Le fichier UMM.sh appelé est le suivant ... Pour que cela fonctionne pour vous, vous devez lire et modifier les éléments en haut du script. Vous devrez peut-être également modifier certaines lignes sleep
pour les adapter à votre situation.
S'amuser!
#!/bin/bash
# *****************************************************************
#Change the following values based on your connection type and name
#Running 'nmcli -t -f TYPE,STATE dev'
#cdma or gsm (edit below)
ConType="cdma"
#Running 'nmcli -t -f NAME,TYPE con'
#The name of your connection in the network manager (edit below)
ConName="Zantel connection"
#Running 'lsusb'
#Get the Vendor and Model ID for your modem (edit below)
USB_Vendor=12d1
USB_Product=1001
#Running 'ifconfig'
#Get the Internet Connection (edit below)
IntCon=ppp0
# ******************************************************************
Network_State=$(nmcli -t -f TYPE,STATE dev)
echo -e
echo -e "Current Network Status: \r"
echo $Network_State
i=0
error_count=0
#default 600
Good_connect_count=600
i=$[Good_connect_count - 50]
Default_ping_Host="google.com"
pingtest=0
while true; do
#First off determine nature of problem if one exists
#Test to see if our connection type even exists
MT=C nmcli -t -f TYPE,STATE dev | grep -q $ConType
if [ $? -eq 0 ]; then
#Check to see if the WWAN is enabled
MT=C nmcli -t -f WWAN nm | grep -q "enabled"
if [ $? -eq 0 ]; then
#Check to see if we have a ppp0 connection
MT=C ifconfig | grep -q $IntCon
if [ $? -eq 0 ]; then
error_count=$error_count
else
dt=$(date)
echo At $dt we have no $IntCon connection...
echo Attempting to start $ConName
nmcli -t con up id "$ConName"
sleep 5
MT=C ifconfig | grep -q $IntCon
if [ $? -eq 0 ]; then
#error_count=0
i=$Good_connect_count
else
error_count=$[$error_count+1]
echo "$error_count Error(s) in a row"
fi
fi
else
dt=$(date)
echo At $dt we have no WWAN...attempting to Enable
nmcli -t nm wwan on
sleep 5
MT=C nmcli -t -f WWAN nm | grep -q "enabled"
if [ $? -eq 0 ]; then
error_count=$error_count
else
error_count=$[$error_count+1]
echo "$error_count Error(s) in a row"
fi
fi
else
dt=$(date)
echo At $dt we dont have our $ConType connection
echo Rebooting USB Device $USB_Vendor : $USB_Product
#Reset USB Modem
usb_modeswitch -Q -R -v $USB_Vendor -p $USB_Product
error_count=0
sleep 25
fi
if [ $error_count -ge 3 ]; then
dt=$(date)
echo We have an issue. Rebooting USB Device at $dt.
usb_modeswitch -Q -R -v $USB_Vendor -p $USB_Product
sleep 25
error_count=0
i=0
fi
i=$[$i+1]
if [ $i -ge $Good_connect_count ]; then
dt=$(date)
if [ $pingtest -eq 0 ]; then
MT=C ping -c1 $Default_ping_Host | grep -q "64 bytes from"
if [ $? -eq 0 ]; then
echo At $dt connection is up and ping test passed!
#error_count=0
i=0
pingtest=1
else
echo Connection is present but cant confirm ping connectivity. Retrying...
error_count=$[$error_count+1]
echo "$error_count Error(s) in a row"
fi
else
pingtest=0
MT=C wget --spider http://www.hp.com 2>&1 | grep -q "200"
if [ $? -eq 0 ]; then
echo At $dt connection is up and http test passed!
error_count=0
i=0
else
echo Connection is present but cant confirm http connectivity. Retrying...
error_count=$[$error_count+1]
echo "$error_count Error(s) in a row"
fi
fi
fi
done