У меня есть машина Ubuntu, на которой запущено программное обеспечение, требующее интернета. Тем не менее, иногда происходит сбой Wi-Fi (например, перезагрузка маршрутизатора) и он не находит сеть снова, пока я не перезапущу диспетчер сети вручную или не выключу и не включу Wi-Fi, чтобы найти его.
Существует ли возможный способ запустить задание cron или задание supervisord для мониторинга возможности подключения, и если не удается найти сеть, чтобы перезапустить службу администратора сети и подключиться к этому конкретному SSID?
Я думаю, что это могло бы произойти из-за новой ошибки администратора сети, поскольку я также начал испытывать эту проблему только недавно - я думаю после обновления до Ubuntu 15.04.
Кажется, что мне удалось решить эту проблему временно как обходное решение с этими двумя файлами:
~/.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
~/.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
Я не знаю, почему, но как Вы упоминаете, иногда когда 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 вторым тайм-аутом.
То, что я думаю, что проблема похожа на соединение, теряется из-за проблем возможности соединения маршрутизатора. Перезапуск администратора сети не мог помочь, когда сам маршрутизатор имеет проблемы. Скорее Вы могли создать сценарий для помещения процесса, запускающего программное обеспечение для приостановки использования SIGSTOP, когда соединение теряется, и снова инициируйте для обработки, чтобы продолжить использовать SIGCONT, когда сеть становится доступной. И добавьте сценарий к своим заданиям крона, планируя его для выполнения каждую минуту.
Для Вашей ссылки: http://hints.macworld.com/article.php?story=20030915193440334
Hope это помогает.