Создание bash-скрипта, который повторно подключается к точке доступа при потере соединения

Создание bash-скрипта, который повторно подключается к точке доступа при потере соединения

У меня возникли проблемы с WIFI на Ubuntu. Я попытался обновить систему, но проблема осталась: я внезапно теряю соединение с маршрутизатором, и когда я нажимаю на панель WIFI, система не обнаруживает никаких точек доступа. Мне приходится снимать флажок «Включить WIFI», а затем снова проверять его, чтобы он заработал, и он автоматически переподключается.

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

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

nmcli nm wifi off
nmcli nm wifi on

но как сделать так, чтобы скрипт знал, что ПК отключен от WIFI?

решение1

Это проще, чем вы думаете:

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

Затем вы можете использовать задание cron, чтобы этот скрипт запускался каждую минуту.

решение2

Хотя ответ правильный, следует учитывать, что:

1) это будет работать независимо от того, вошел ли пользователь в систему или нет --- это может быть желаемым поведением или нет, в зависимости от приложения;

2) если повторное подключение задержится более чем на 1 минуту, вы никогда не доберетесь туда...

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

Вот сценарий — никогда не знаешь, что будет дальше.

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done

Связанный контент