Мой вопрос может показаться странным, но он действительно имеет смысл, если ваше интернет-соединение постоянно отключается.
Я хочу знать, как я могу перезапустить сетевой менеджер с помощью сценария оболочки.
Теперь я знаю, что sudo service network-manager restart
- это то, как вы делаете это в терминале, но, к сожалению, это не работает на сценарии оболочки.
Есть идеи?
Нет, это совсем не странно, у меня слишком много проблем с подключением, когда я использую свой usb-сеттер-модем.
Вот как это сделать
перезапустить менеджер сети службы gksu
blockquote>сохранить его в файл с расширением .sh и предоставьте разрешение на выполнение исполняемого файла, щелкнув правой кнопкой мыши >> свойства >> разрешения
У меня тоже была очень похожая проблема. Мой интернет настолько нестабилен, что когда есть колебания мощности, модем отключается от сети и не может быть виден, если вы не потянете модем и не подключите его снова. В противном случае вы можете использовать usb_modeswitch. Поэтому я взял приведенный выше скрипт и настроил его для выполнения обеих задач.
#!/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
Спасибо!
Это лучшее решение предыдущего вопроса.
Я создал 2 сценария, во-первых, это ...
sudo /home/{your user name}/UMM.sh
Запустив этот «В терминале», если вы создаете значок, вы можете ввести свой пароль sudo.
UMM.sh, который он вызывает, выглядит следующим образом ... Чтобы заставить его работать на вас, вам придется прочитать и изменить материал в верхней части скрипта. Возможно, вам также придется изменить некоторые из sleep
строк в соответствии с вашей ситуацией.
Веселись!
#!/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
nmcli
- инструмент командной строки для управления NetworkManager и получения его статуса.
У меня также была такая же проблема при использовании мобильного широкополосного доступа.
Я создал скрипт оболочки следующим образом. Сохраните его, дайте разрешение на выполнение и поместите его в Startup Applications, и это работает как шарм! Соединение будет установлено автоматически, если соединение разорвано. Это то, что я хотел.
Вам необходимо изменить идентификатор сети (для меня это "Tata Docomo Internet"
). Замените "Tata Docomo Internet"
именем вашего мобильного широкополосного соединения.
#!/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