Мой маршрутизатор находится довольно далеко от моего рабочего места, но у меня есть кабель Ethernet, который проходит через это расстояние. Когда я подключаю его к ноутбуку, есть ли способ автоматически включить точку доступа ноутбука, чтобы мой телефон мог подключаться к более сильному сигналу WiFi?
Кроме того, необходимо отключить точку доступа, когда сеть Ethernet соединение удалено.
Используйте nmcli d|grep -E "^eth0"|grep connected
, чтобы определить, подключен ли кабель.
Напишите скрипт, подобный
AP=0
while :; do
if nmcli d|grep -E "^eth0"|grep connected ; then
if [[ AP -eq 0 ]]; then
# bring hotspot up
AP=1
fi
else
if [[ AP -eq 1 ]]; then
# turn hotspot off
AP=0
fi
fi
sleep 2
done
На основе ответа Bob Johnson я предложил бы использовать nmcli device show [ethernetdevice] | grep IP4.ADDRESS
, это - агностик на язык и предотвращает для хранения WiFi как AP, когда кабель соединен, но не дает IP-адрес:
#!/bin/bash
AP=0
while :;
do
if nmcli device show eth0 | grep IP4.ADDRESS ; then
if [[ AP -eq 0 ]]; then
nmcli device disconnect wlan0
nmcli connection up 'Shared WiFi connection name'
AP=1
fi
else
if [[ AP -eq 1 ]]; then
nmcli connection down 'Shared WiFi connection name'
nmcli device connect wlan0
AP=0
fi
fi
sleep 5
done
Где:
eth0
устройство Ethernet, определенное ifname, eth0 в большинстве случаев, (не мой) можно получить корректное название устройства путем ввода nmcli device
в терминале.wlan0
устройство WiFi, определенное ifname.Shared WiFi connection name
название СОЕДИНЕНИЯ для совместного использования WiFi как AP (не всегда эквивалентный SSID, это зависит от того, как это настроено).Добавьте сценарий для автозапуска приложений в оболочке. Это работает как очарование на меня.