Автоматически переподключить беспроводное соединение

13

К сожалению, беспроводное соединение в моем доме часто пропадает, что требует перезагрузки беспроводного маршрутизатора.

Еще хуже то, что мой Ubuntu Media PC автоматически не подключается к беспроводной сети, когда его нет, а затем появляется примерно через минуту. Рассматриваемая сеть настраивается как «автоматически подключаться» в настройках сети.

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

Я ищу способ, поэтому мне не нужно постоянно делать это вручную.

Лукас Мейер
источник
У меня точно такая же проблема. Я был бы удовлетворен решением, которое использовало, например, скрипт cron каждые 5 минут, запрашивающий повторное подключение Network Manager, если он еще не подключен.
Мариус Гедминас
@ Мариус, у тебя есть такой сценарий?
Оли
Пожалуйста, добавьте некоторую информацию об оборудовании к вашему вопросу.
Хорхе Кастро
@ Oli: к сожалению, нет.
Мариус Гедминас

Ответы:

3

У меня была похожая проблема с половинной картой Intel Wireless WiFi 5100 моего ноутбука и драйвером iwlagn. Эта проблема - известная проблема с драйвером iwlagn, и лучший обходной путь - отключить 802.11n на карте.

Чтобы отключить 802.11n на этой карте, создайте / отредактируйте свой /etc/modprobe.d/options.confфайл:

sudo -H gedit /etc/modprobe.d/options.conf

И добавьте к этому следующее.

options iwlagn 11n_disable=1 11n_disable50=1
Майк
источник
3

Это альтернатива с использованием service network-manager restart:

#!/usr/bin/env bash


# 1. copy this script into
# /usr/bin

# 2. change permissions
# root:/usr/bin# chmod +x checkwifi.sh 

# 3. add to cron as root
# sudo su
# crontab -e

# add this to check your wifi every minute
# * * * * * /usr/bin/checkwifi.sh

is_ok=$(/sbin/ifconfig wlp2s0 | /bin/grep inet\ addr -c)

if [ "$is_ok" -eq 0 ] ; then

    # restart
    /usr/sbin/service network-manager restart

    # wifi is ok
    /bin/echo $(date) "wifi was restarted" >> /user/user/Dropbox/wifi.log
    /bin/echo $(/sbin/ifconfig wlp2s0) >> /home/user/Dropbox/wifi.log

else

    # wifi is ok
    /bin/echo $(date) "wifi is ok" >> /home/user/Dropbox/wifi.log
    /bin/echo $(/sbin/ifconfig wlp2s0) >> /home/user/Dropbox/wifi.log

fi
auraham
источник
3

Кажется, это опубликовано по всей сети без хороших решений. Я полагаю, что лучшее исправление / обходной путь - это заставить его проверять подключение к Интернету, а если его там нет, то заново подключиться. Я сделал это с помощью теста ping на google.com, а затем просто перезапустил сеть. Код не проверен (часть перезапуска и часть cron, если оператор проверен), поэтому я просто подожду, пока он не отключится. У меня Ubuntu Server 12.10, так что нет графического интерфейса, и каждый раз, когда беспроводная связь перегружается, неудобно подключать монитор и клавиатуру.

Cron часть сделана через webmin, так что Idk много об этом. Сценарий выглядит следующим образом:

# edited by dim_voly for networking restart on no pingback every 5 mins

#!/bin/bash
# Name of File: networkingCron
# Purpose: to check if the internet is up (via ping test to google) and if not, restart networking service
# this script is invoked via cron, ideally every 5 mins.

#check if there is internet via ping test
if ! [ "`ping -c 1 google.com`" ]; then #if ping exits nonzero...
   sudo service networking restart #restart the whole thing
   echo Networking service restarted due to no ping response from google.com
fi

echo Script 'networkingCron' completed, if no message above then there was no network restart.

# dunno how to restart the wifi only since that is the only active connection that server uses.

# also I don't think those echos go anywhere

Убедитесь, что вы работаете от имени пользователя root, и убедитесь, что у скрипта есть права на выполнение (u + x).

ссылки по теме:

dim_voly
источник
2

Более современная версия скрипта @DougD

#!/bin/bash    
wlan=$(/sbin/ifconfig wlan0 | grep inet\ addr -c)
if [ "$wlan" -eq 0 ]; then    
    /sbin/ifdown wlan0 && /sbin/ifup wlan0
else    
    echo interface is up    
fi
ястреб
источник
2

Просто создайте новый файл vi /root/checkwanupи добавьте этот контент:

#!/bin/bash    
wlan=`/sbin/ifconfig wlan0 | grep inet\ addr | wc -l`    
if [ $wlan -eq 0 ]; then    
    /sbin/ifdown wlan0 && /sbin/ifup wlan0
else    
    echo interface is up    
fi

Затем chmod 555 /root/checkwanupи добавьте его в свой crontab:

crontab -e
*/15 * * * * /bin/bash /root/checkwanup

Источник: http://sirlagz.net/2013/01/10/script-wifi-checker-script/

DougD
источник
добавить LANG=Cили grep inet\ addrможет потерпеть неудачу.
Mawi12345
1

Возможно, вы захотите взглянуть на использование wpa_supplicant вместо network-manager, но это не имеет значения, когда вы находитесь в медиа-центре. wpa_supplicant не так гибок, как сетевой менеджер, но на самом деле он не сдается после трех попыток. взгляните на этот ответ .

LassePoulsen
источник
1

Вот моя версия - она ​​работает с NetworkManager:

#!/bin/bash    
wlan=`/sbin/ifconfig wlan0 | grep inet\ addr | wc -l`    
if [ $wlan -eq 0 ]; then   
    /usr/bin/nmcli nm wifi off && /usr/bin/nmcli nm wifi on 
fi
Крис
источник