Valor de configuración multilínea de Wireguard

Valor de configuración multilínea de Wireguard

¿Es posible dividir un comando de configuración en varias líneas en lugar de una cadena larga?

P.ej

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

Cuando se utilizan más comandos, la línea se vuelve muy larga e ilegible. Me gustaría dividirlo para poder usar una línea por comando. Algo como:

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

La página de manual dice que está basada en el formato ini pero no ofrece ayuda sobre este tema.

Respuesta1

El wg-quickcomando es unscript de bash. PostUpSe utilizan las claves de lectura de bucle (como la clave) read -r, lo que impide cualquier uso \ para separar líneas. Pero leer este mismo guión muestra:

POST_UP=( )

declararlo como una matriz, y:

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

para agregar un elemento a la matriz.

Luego se ejecuta más tarde con (hay un evalcomando en la función execute_hooks):

execute_hooks "${POST_UP[@]}"

Así se puede dividirmúltiples comandos(pero nolíneas arbitrarias) utilizando varias veces la misma entrada clave. Entonces el ejemplo de OP funcionaría así:

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

En realidad elpágina de manualya lo dice:

• PreUp, PostUp, PreDown, PostDown: fragmentos de script que serán ejecutados por bash(1) antes/después de configurar/derribar la interfaz, más comúnmente utilizados para configurar opciones DNS personalizadas o reglas de firewall. La cadena especial '%i' se expande aINTERFAZ. Cada uno se puede especificar varias veces, en cuyo caso los comandos se ejecutan en orden.

información relacionada