сценарий оболочки для перезапуска сетевого менеджера & mdash; не из терминала

Мой вопрос может показаться странным, но он действительно имеет смысл, если ваше интернет-соединение постоянно отключается.

Я хочу знать, как я могу перезапустить сетевой менеджер с помощью сценария оболочки.

Теперь я знаю, что sudo service network-manager restart - это то, как вы делаете это в терминале, но, к сожалению, это не работает на сценарии оболочки.

Есть идеи?

2
задан 25 May 2012 в 18:16

4 ответа

Нет, это совсем не странно, у меня слишком много проблем с подключением, когда я использую свой usb-сеттер-модем.

enter image description here

Вот как это сделать

перезапустить менеджер сети службы gksu

сохранить его в файл с расширением .sh и предоставьте разрешение на выполнение исполняемого файла, щелкнув правой кнопкой мыши >> свойства >> разрешения

0
ответ дан 25 May 2012 в 18:16

У меня тоже была очень похожая проблема. Мой интернет настолько нестабилен, что когда есть колебания мощности, модем отключается от сети и не может быть виден, если вы не потянете модем и не подключите его снова. В противном случае вы можете использовать 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

Спасибо!

0
ответ дан 25 May 2012 в 18:16

Это лучшее решение предыдущего вопроса.

Я создал 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
0
ответ дан 25 May 2012 в 18:16

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
0
ответ дан 25 May 2012 в 18:16

Другие вопросы по тегам:

Похожие вопросы: