Я пытаюсь настроить свои сетевые интерфейсы. Я хочу, чтобы мой беспроводной интерфейс отключался при подключении кабеля Ethernet. Когда я вытаскиваю кабель Ethernet, мой беспроводной интерфейс должен снова быть включен.
Я создал /etc/network/if-up.d/wlan-down:
#!/bin/sh
[ "$IFACE" != "eth1" ] || exit 0
ifdown wlan0
exit 0
и /etc/network/if-down.d/wlan-up:
#!/bin/sh
[ "$IFACE" != "eth1" ] || exit 0
ifup wlan0
wpa_cli -i wlan0 reassociate
exit 0
но, похоже, это совсем не работает. WPA все время пытается подключиться. Я вижу, что wlan0 все время появляется и исчезает. Мои вопросы:
Я использую нестабильный Debian
Выглядит как ifplugd
в пакете есть все нужные мне скрипты! После установки:
apt-get install ifplugd
и добавляем eth1 в файл конфигурации /etc/default/ifplugd
все заработало как хотел, без лишних скриптов (чистил все до исходного состояния).
Спасибо всем за помощь
Это для настольной системы? Вы рассматривали возможность использования сетевой менеджер или wicd. Эти инструменты автоматически позаботятся об этом.
Как я могу отладить эти скрипты, например что произошло и что было выполнено?
Возможно, вы захотите использовать что-то вроде регистратор для отправки отладочной информации в системный журнал. Или вы можете просто вставить несколько эхо-команд туда и сюда, чтобы записать что-то в какой-нибудь файл.
Вот возможное "непроверенное" решение,
в вашем / etc / network / interfaces
allow-hotplug eth0
iface eth1 inet dhcp
down ifconfig wlan0 up
down wpa_cli -i wlan0 reassociate
up ifconfig wlan0 down
allow-hotplug wlan0
iface wlan0 inet dhcp
up ifconfig eth0 down
down ifconfig eth0 up
ну вот мои пять центов, я использую вышеупомянутую настройку для изменения маршрутов на основе интерфейса вверх / вниз на моем сервере, это может сработать и для вас, причина, по которой я сделал это с использованием файла интерфейса, заключалась в том, что мои скрипты, похоже, не выполнялись из каталог /ifup.d даже с 755.
Дайте мне знать, если это сработает, к сожалению, у меня нет машины debian с картой Wi-Fi для тестирования :(
Я по-прежнему считаю, что правильным решением будет настройка метрики беспроводного интерфейса, как я описал в Как я могу настроить wpa_supplicant так, чтобы мой интерфейс wlan отключался, когда я подключаю кабель Ethernet?
Вы хотите настроить что-то в поддереве / etc / network /, возможно, как предлагает womble, увеличив метрику маршрута Wi-Fi, или, возможно, каким-либо другим способом, включая пользовательский скрипт в /etc/network/if-up.d/ это отключило бы интерфейс Wi-Fi, если бы интерфейс Ethernet появился.
Информация о создании сценариев для /etc/network/if-up.d/ находится на странице руководства по интерфейсам в разделе «ОПЦИИ IFACE».
Проблема в том, что вы не можете запускать ifup / down рекурсивно. Я попытался сделать что-то подобное, где я хотел вызвать интерфейс VPN, когда был запущен интерфейс WAN.
Мое решение:
echo ifup vpn0 | at now >/dev/null 2>&1
Для автоматического включения и выключения интерфейса при подключении или отключении кабеля используйте ifplugd из одноименного пакета.
хм, комментарии не любят код.
#!/bin/bash
interval=5
while [ 0 -lt 1 ]; do
ifconfig eth0 up
ifconfig eth0 | grep 'inet addr' | awk '{ print $2 }' | cut -c 6- > /tmp/eth0.stat
if [ -z /tmp/eth0.stat ]; then
ifconfig eth0 down
sleep $interval
else
echo "We have an address (`cat /tmp/eth0.stat`), looking good." > /var/log/eth0.stat.log
sleep 10
fi
done
создать демон для запуска этого при запуске.
дайте мне знать, как это работает
По крайней мере, в дистрибутивах, связанных с Fedora, если вы посмотрите на ifup
сценарий и его родственники, вы увидите, что если /sbin/ifup-local
и /sbin/ifdown-local
существуют, они будут казнены. Это дает вам безопасное место для подключения локальных сценариев компьютера. Один аргумент, передаваемый этим сценариям, будет включать или отключать устройство.
Вы можете создать эти сценарии и заставить их запускать и останавливать eth0, если запускаемое или останавливаемое устройство является вашим беспроводным устройством.
Я не знаю, настроены ли сетевые сценарии для работы таким же образом в Debian и связанных дистрибутивах, но на это стоит посмотреть.