Valor de configuração multilinha do Wireguard

Valor de configuração multilinha do Wireguard

É possível dividir um comando de configuração em várias linhas em vez de uma string longa?

Por exemplo

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ao usar mais comandos a linha fica muito longa e ilegível. Gostaria de dividi-lo para poder usar uma linha por comando. Algo como:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; \
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

A página de manual diz que é baseado no formato ini, mas não tem ajuda neste tópico.

Responder1

O wg-quickcomando é umscript bash. As chaves de leitura de loop (como a PostUpchave) estão sendo usadas, read -ro que impede qualquer uso \ para separar linhas. Mas a leitura deste mesmo script mostra:

POST_UP=( )

para declará-lo como um array e:

          PostUp) POST_UP+=( "$value" ); continue ;;

para adicionar um elemento ao array.

Em seguida, é executado posteriormente com (há um evalcomando na função execute_hooks):

execute_hooks "${POST_UP[@]}"

Assim pode-se dividirvários comandos(mas nãolinhas arbitrárias) usando várias vezes a mesma entrada de chave. Então o exemplo do OP funcionaria assim:

PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Na verdade opágina de manualjá conta:

• PreUp, PostUp, PreDown, PostDown — trechos de script que serão executados pelo bash(1) antes/depois de configurar/desmontar a interface, mais comumente usados ​​para configurar opções personalizadas de DNS ou regras de firewall. A string especial `%i' é expandida paraINTERFACE. Cada um pode ser especificado múltiplas vezes, caso em que os comandos são executados em ordem.

informação relacionada