Создание bash-скрипта, который переподключается к точке доступа при потере соединения

У меня проблемы с WIFI в Ubuntu. Я попытался обновить систему, но все равно происходит то, что я внезапно теряю соединение с маршрутизатором, и когда я нажимаю на панели WIFI, система не обнаруживает AP. мне нужно снять флажок «включить WIFI», а затем снова проверить его, чтобы он работал, он автоматически переподключается.

Я подумываю о создании сценария bash, который определяет, когда компьютер отключен от маршрутизатора по какой-либо причине, а когда он отключен, отключите его, а затем включите Wi-Fi. я имею в виду как автоматическую перезагрузку соединения, которое возможно?

я думаю, что я должен использовать это

nmcli nm wifi off
nmcli nm wifi on

, но как я могу заставить скрипт знать, если ПК отключен от WIFI?

4
задан 12 November 2013 в 02:03

2 ответа

Это проще, чем вы думаете:

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

Тогда вы можете использовать задание cron для запуска этого скрипта каждую минуту.

0
ответ дан 12 November 2013 в 02:03

Хотя ответ правильный, вы должны принять во внимание, что:

1) он будет работать, если пользователь вошел в систему или нет - это может быть желаемое поведение или нет, в зависимости от application;

2) если переподключение задерживается более чем на 1 минуту, вы никогда не доберетесь до места ...

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

Вот сценарий - вы никогда не знаете.

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done
0
ответ дан 12 November 2013 в 02:03

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

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