Как я могу перезагрузить Wi-Fi соединение из командной строки?

28

Иногда мое Wi-Fi соединение больше не работает по разным причинам. Отключение и повторное включение Wi-Fi через графический интерфейс индикатора сети не решает проблемы в этих случаях.

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

orschiro
источник

Ответы:

35

nmcliочень полезная утилита командной строки для взаимодействия с Network Manager. Используйте эту команду в Ubuntu 16.04 LTS

nmcli radio wifi off && sleep 5 && nmcli radio wifi on

Для версий до 15.10 (т. Е. До перехода на systemd) команда будет немного другой:

nmcli nm wifi off && sleep 5 && nmcli nm wifi on

Хорошая вещь об этом - это не требует полномочий root.

Перезапуск самого сетевого менеджера также является хорошей идеей.

Для 16.04 LTS:

sudo systemctl restart NetworkManager

и за 14.04 LTS:

sudo service network-manager restart

И если бы мы действительно хотели, мы могли бы даже автоматизировать это с помощью скрипта, который перезапустит ваш Wi-Fi.

#!/bin/bash
# replace wlan0 with your device name
# as given by ip addr or ifconfig
while true 
do
    # keep checking if we have ip address    
    wifi_info=$(ip -4 -o addr  show wlan0 )
    while [ -n "$wifi_info" ];
    do
       wifi_info=$(ip -4 -o addr  show wlan0 )
       sleep 0.25
    done

    # We get here only if IP address is lost
    # which means we're off-line
    # restart wifi 
    nmcli radio wifi off && sleep 5 && nmcli radio wifi on
done
Сергей Колодяжный
источник
4
.serviceподразумевается, поэтому может быть опущеноsudo systemctl restart NetworkManager
Zanna
1
@Zanna TIL ... Я все это время печатал .service.
Edwinksl
Работал как шарм для меня.
Джош
Спасибо отлично Почему есть две разные команды?
neverMind9
1
@TechLord По сути, это потому, что начиная с версии 15.04, Ubuntu перешла на systemdсистему инициализации - то, что на самом деле вызывает базовые сервисы и демоны при загрузке. Проблема в том, что, в отличие от старых вещей, systemdстарается не только начинать , но и управлять ими . Это приводит к тому, nmcliчто будет переписано, чтобы соответствовать systemd. По крайней мере, это мое понимание.
Сергей Колодяжный
10

Вот две альтернативы, о которых я думаю,

Первая альтернатива , сбить / поднять интерфейс

ifconfig wlan0 down ## assumes your wlan is named wlan0
ifconfig wlan0 up

Второй вариант , перезапустите весь сетевой менеджер. Это предполагает, что у вас установлен сетевой менеджер. Если нет, установите его с помощью следующего cmd в вашем терминале sudo apt-get install network-manager.

sudo service network-manager restart
Маттиас
источник
5

В Ubuntu 15.10 и 16.04 LTS вы можете использовать systemdфункцию:

 systemctl restart NetworkManager.service
GAD3R
источник
4

Используйте ifdown+ имя интерфейса для отключения сети

ifdown IFACE

Используйте ifup+ имя интерфейса, чтобы включить его

ifup IFACE

Замените IFACEна имя вашего устройства, как указаноifconfig

Abhijith.s
источник