Wireguard Multiline-Konfigurationswert

Wireguard Multiline-Konfigurationswert

Ist es möglich, einen Konfigurationsbefehl auf mehrere Zeilen statt auf eine lange Zeichenfolge aufzuteilen?

Z.B

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

Bei Verwendung mehrerer Befehle wird die Zeile sehr lang und unlesbar. Ich würde sie gerne aufteilen, sodass ich pro Befehl eine Zeile verwenden kann. So etwas wie:

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

Auf der Manpage steht, dass es auf dem INI-Format basiert, aber es gibt keine Hilfe zu diesem Thema.

Antwort1

Der wg-quickBefehl ist einBash-Skript. Die Schleife, die Schlüssel liest (wie z. B. den PostUpSchlüssel), verwendet read -rdie Verwendung von \ zum Trennen von Zeilen. Beim Lesen desselben Skripts wird jedoch Folgendes angezeigt:

POST_UP=( )

um es als Array zu deklarieren, und:

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

um dem Array ein Element hinzuzufügen.

Die Ausführung erfolgt dann später mit ( evalin der Funktion ist ein Befehl enthalten execute_hooks):

execute_hooks "${POST_UP[@]}"

So kann man aufteilenmehrere Befehle(aber nichtbeliebige Linien) indem Sie dieselbe Tasteneingabe mehrfach verwenden. Das Beispiel des OP würde also folgendermaßen funktionieren:

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

Eigentlichmanpagesagt es schon:

• PreUp, PostUp, PreDown, PostDown — Skriptschnipsel, die von bash(1) vor/nach dem Einrichten/Abbauen der Schnittstelle ausgeführt werden. Am häufigsten werden sie verwendet, um benutzerdefinierte DNS-Optionen oder Firewall-Regeln zu konfigurieren. Die spezielle Zeichenfolge `%i' wird erweitert zuSCHNITTSTELLE. Jeder Befehl kann mehrfach angegeben werden. In diesem Fall werden die Befehle der Reihe nach ausgeführt..

verwandte Informationen