Классическое решение:
Для систем на основе Debian, таких как Ubuntu, команды, основанные на состоянии сети, могут быть установлены как правило в /etc/network/interfaces
; этот ответ демонстрирует случай двух интерфейсов eth0
иwlan0
/etc/network/interfaces
в текстовом редакторе (, этот файл содержит правила и настройки для ваших сетевых интерфейсов, также обратите внимание, что диспетчер сети -не должен управлять интерфейсами, перечисленными в этом файле) sudo notepadqq /etc/network/interfaces
pre-up
иpre-up
)или(post-down
иpost-up
)в соответствии с вашими потребностями, чтобы отключить интерфейс wlan0, когда сетевой провод подключен/отключен, вы можете использовать ifconfig wlan0 down
илиip link set wlan0 down
(пример использует ifconfig )... пример: auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
gateway 192.168.1.1
post-up ifconfig wlan0 down
post-down ifconfig wlan0 up
Альтернативное решение Systemd:
Официальная документация здесь объясняет, что поддерживается systemd, и поэтому прямое простое решение, подобное классическому , не реализовано с 05/2019
Альтернативное решение Systemd:
Также можно использовать диспетчер для запуска скрипта, как описано в этом ответе , том или этой статье
Альтернативное решение Systemd:
Как вы указали в комментарии , этот ответ может быть альтернативным решением, реализованным с помощью службы
Связанные:
Целевая сеть здесь и здесь могут использоваться для запуска других служб в зависимости от состояния сети