Можно ли разделить команду конфигурации на несколько строк вместо одной длинной строки?
Например
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
При использовании большего количества команд строка становится очень длинной и нечитаемой. Я бы хотел разделить ее, чтобы использовать одну строку на команду. Что-то вроде:
PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
На странице руководства сказано, что он основан на формате INI, но никакой справки по этой теме нет.
решение1
Команда wg-quick
— этоbash-скрипт. Цикл чтения ключей (таких как PostUp
ключ) использует read -r
, что предотвращает любое использование \
для разделения строк. Но чтение этого же скрипта показывает:
POST_UP=( )
объявить его как массив, и:
PostUp) POST_UP+=( "$value" ); continue ;;
для добавления элемента в массив.
eval
Затем он выполняется позже ( в функции есть команда execute_hooks
):
execute_hooks "${POST_UP[@]}"
Таким образом, можно разделитьнесколько команд(но нетпроизвольные линии) с помощью многократного использования одного и того же ключевого ввода. Так что пример OP будет работать так:
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
На самом делестраница руководствауже говорит это:
• PreUp, PostUp, PreDown, PostDown — фрагменты скриптов, которые будут выполнены bash(1) до/после настройки/демонтажа интерфейса, чаще всего используются для настройки пользовательских параметров DNS или правил брандмауэра. Специальная строка `%i' расширяется доИНТЕРФЕЙС. Каждый из них может быть указан несколько раз, в этом случае команды выполняются в следующем порядке:.