[systemd] rueckwaertskompatibilitaet

13/07/2015 - 16:43 von Marc Haber | Report spam
Hallo,

gegeben sei ein service, der über systemd gestartet wird und für den
Konfigurationsinformationen in einem /etc/default file liegen:

|[Service]
|EnvironmentFile=-/etc/default/foo
|ExecStart=/usr/sbin/foo -f $FOO

Nun bekommt dieser Dienst zusàtzliche Konfigurationsoptionen für IPv6,
die in einer Variablen FOO6 hinterlegt sind:
|[Service]
|EnvironmentFile=-/etc/default/foo
|ExecStart=/usr/sbin/foo -f $FOO -6 $FOO6

Jetzt wàre es naheliegend, FOO in FOO4 umzubenennen, um nicht den
Eindruck zu erwecken, IPv4 wàre der Default. Außerdem soll das ganze
auch dann funktionieren, wenn $FOO6 nicht gesetzt ist.

In einem Bash-Script würde ich schreiben:
|[Service]
|EnvironmentFile=-/etc/default/foo
|ExecStart=/usr/sbin/foo -f ${FOO4:-$FOO} ${FOO6:+-6 $FOO6}

Geht sowas auch in systemd? Wenn ja, wie? Wenn nein, wie schreibt man
sowas in der systemd-Welt?

Grüße
Marc
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " | http://www.zugschlus.de/
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
 

Lesen sie die antworten

#1 Martin Vaeth
13/07/2015 - 18:47 | Warnen spam
Marc Haber <mh+ wrote:
|ExecStart=/usr/sbin/foo -f $FOO -6 $FOO6

In einem Bash-Script würde ich schreiben:
|ExecStart=/usr/sbin/foo -f ${FOO4:-$FOO} ${FOO6:+-6 $FOO6}

Geht sowas auch in systemd?



Nein. systemd unit != sh
In systemd gibt es ja sogar die abartige Unterscheidung
$FOO vs ${FOO}

Wenn nein, wie schreibt man sowas in der systemd-Welt?



Man schreibt es in sh (oder einer anderen Sprache seiner Wahl)
und startet dieses Programm/Skript. Beispielsweise so
(quoting ungetested):

|ExecStart=/bin/sh -c exec /usr/sbin/foo -f "\${FOO4:-\$FOO}" ...

oder so:

/usr/sbin/foo.sh:

#!/bin/sh
exec /usr/sbin/foo -f "${FOO4:-$FOO}" "${FOO6:+-6 $FOO6}"

|ExecStart=/usr/sbin/foo.sh

Ähnliche fragen