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


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

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


9
2018-05-24 07:51


происхождения


Я думаю, что это может быть связано с новой ошибкой сетевого администратора, поскольку я также начал испытывать эту проблему только недавно, думаю, после обновления до Ubuntu 15.04. - Sadi
Существует ряд отчетов об ошибках, которые указывают на то, что может возникнуть проблема. Не могли бы вы разместить информацию о своей версии ядра (uname -a) и сетевом менеджере, а также информацию о вашей карте WiFi. - DaveM


ответы:


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

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

  1. У меня есть файл сценария для просмотра Wi-Fi-соединения и включения и выключения Wi-Fi при отключении, например. ~/.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


7
2018-05-29 10:45





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

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

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

sudo iwlist wlan0 scan

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

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

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

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

Что-то вроде:

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

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


1
2018-05-29 10:07



Вышеупомянутое решение в порядке, но как поймать уведомление от сетевого менеджера (nm), что соединение упало. Это должно быть возможно из самого НМ, быстрый просмотр источника, похоже, предполагает, что здесь есть функциональность. Сообщение берется из dbus и обновлений значков nm, так что это возможно, это ошибка, или, возможно, другая часть системы улавливает падение соединения и была изменена, и уведомление больше не проходит, чтобы попытаться снова подключиться? - DaveM


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

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

Надеюсь это поможет.


0