Запуск только определенного /etc/network/if-up.д-сценарий для конкретных интерфейсов

Я хотел бы запустить сетевой скрипт при вызове определенного интерфейса (например, eth0), вызвав

ifup eth0

скрипт должен запускаться только при вызове eth0. Мой подход заключался в написании сценария (с именем script.sh) поместите его где-нибудь как исполняемый файл, а затем напишите в /etc/network/interfaces:

auto eth0
iface eth0 inet manual
up /path/to/script.sh

есть ли более элегантный способ сделать это? Могу ли я использовать /etc/network/if-up.d среда сценариев в некотором роде? Насколько мне известно все скрипты в этой папке будет работать независимо от того, какой интерфейс был поднят.

10
задан JakeGould
28.12.2022 1:37 Количество просмотров материала 2963
Распечатать страницу

1 ответ

когда скрипты ifup.d называются огромным выбором переменных окружения, которые передаются ему, связанные с конфигурацией конкретного интерфейса. Например, если конфигурация интерфейса выглядит следующим образом.

iface eth0 inet manual
  dofoo on

тогда ваш скрипт получит переменную вида $IF_DOFOO стоимостью on.

зная, что вы могли бы положить что-то в начале вашего сценария, как

#!/bin/bash

if [ -z "$IF_DOFOO" ] ; then
    # this script only applies to interface flagged as dofoo
    exit 0
fi
... Doing the foo.

С этим на месте, что сценарий может легко поместить под if-up.d.

конечно, вы также можете просто посмотреть на $IFACE value, и жестко запрограммировать скрипт для запуска только для определенного интерфейса или и сопоставить его с каким-либо другим внешним источником конфигурации. Посмотрите на другие скрипты в if-up.d для некоторых примеров того, что вы можете сделать.

4
отвечен Zoredache 2022-12-29 09:25

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх