Как сохранить соединение Wi-Fi после отключения?

У меня есть машина Ubuntu, на которой запущено программное обеспечение, требующее интернета. Тем не менее, иногда происходит сбой Wi-Fi (например, перезагрузка маршрутизатора) и он не находит сеть снова, пока я не перезапущу диспетчер сети вручную или не выключу и не включу Wi-Fi, чтобы найти его.

Существует ли возможный способ запустить задание cron или задание supervisord для мониторинга возможности подключения, и если не удается найти сеть, чтобы перезапустить службу администратора сети и подключиться к этому конкретному SSID?

9
задан 24 May 2015 в 10:51

3 ответа

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

Кажется, что мне удалось решить эту проблему временно как обходное решение с этими двумя файлами:

  1. У меня есть файл сценария, чтобы следить за соединением WiFi и отключить WiFi и на при разъединении, например. ~/.bin/WiFi-Keep-Connected, с этим содержанием:


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    sleep 10
done
  1. У меня также есть .desktop файл для хранения этого сценария, выполняющего каждый раз, когда я вхожу в систему, например. ~/.config/autostart/KeepWifiConnected.desktop, с этим содержанием:


[Desktop Entry]
Type=Application
Exec=/home/"username"/.bin/WiFi-Keep-Connected
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Keep WiFi Connected
Icon=networkmanager

Примечание: Необходимо будет ввести имя пользователя в путь, данный для Exec= выше.

NB: Иногда перезапускающий Wi-Fi таким образом, недостаточно, в этом случае я должен перезапустить Администратора сети путем ввода этой команды однажды или даже дважды от терминала: sudo service network-manager restart

Поэтому это могла бы быть лучшая идея изменить сценарий выше (на всякий случай) как это:


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        gksudo service network-manager restart
        sleep 10
    fi
    sleep 10
done
7
ответ дан 24 May 2015 в 10:51

Я не знаю, почему, но как Вы упоминаете, иногда когда Wi-Fi перестал работать, администратор сети не находит сеть снова.

я думаю, что проблема состоит в том, что администратор сети, после сбоя соединения Wi-Fi, не обновляет список Wi-Fi (и кажется, что администратор сети скрывает проблематичную сеть). У администратора сети нет пункта меню пересканирования, и беспроводной флажок отключения и включения в меню администратора сети не вызывает новое сканирование Wi-Fi (как перезапуск сервиса делает).

, Когда администратор сети теряет мое беспроводное соединение и оно не находит мой Wi-Fi снова (и я известный, что Wi-Fi является оператором), я выполняю команду:

sudo iwlist wlan0 scan

Это работает, сканирование Wi-Fi в интерфейсе wlan0 (wlan0 название беспроводного интерфейса в моем ноутбуке), и это показывает Вам доступные беспроводные сети, но как администратор сети побочного эффекта автоматически обновляют его список, и находит потерянную сеть.

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

, Но, как Вы упоминаете, Вы можете крон это, и можно сделать это, не тестируя возможность соединения (процесс сканирования обновляет список Wi-Fi, но это не закрывает текущее беспроводное соединение, если Вы соединены).

, Если Вы предпочитаете, можно протестировать возможность соединения с помощью ping или iwconfig и если Вы не соединены, тогда запускают сканирование.

Что-то как:

#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
    iwlist wlan0 scan
fi

, Но помнят, что этот сценарий должен быть sudoed или выполняемый с полномочиями пользователя root. Это отправляет только 1 ping с 1 вторым тайм-аутом.

0
ответ дан 24 May 2015 в 10:51

То, что я думаю, что проблема похожа на соединение, теряется из-за проблем возможности соединения маршрутизатора. Перезапуск администратора сети не мог помочь, когда сам маршрутизатор имеет проблемы. Скорее Вы могли создать сценарий для помещения процесса, запускающего программное обеспечение для приостановки использования SIGSTOP, когда соединение теряется, и снова инициируйте для обработки, чтобы продолжить использовать SIGCONT, когда сеть становится доступной. И добавьте сценарий к своим заданиям крона, планируя его для выполнения каждую минуту.

Для Вашей ссылки: http://hints.macworld.com/article.php?story=20030915193440334

Hope это помогает.

0
ответ дан 24 May 2015 в 10:51

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

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