Seite 1 von 1
opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 09:38
von anmith
Hallo,
ich bin gerade dabei, erste eigene opsi-Pakete zu bauen und hänge an einer Stelle, zu der ich in der Doku nichts gefunden habe:
Ist es möglich, Variablen aus dem opsi-script in dem Bereich ShellScript zu verwenden und falls ja, wie?
Konktret habe ich in dem control-File ein Select, in dem ein Wert ausgewählt werden kann. Diesen lese ich dann mit
Code: Alles auswählen
set $update_dow$ = GetProductProperty("update_dow","mon")
aus und würde ihn gerne später in einem ShellScript verwenden:
Code: Alles auswählen
[ShellScript_unattended_upgrades]
...
cat <<EOM > /etc/systemd/system/apt-daily.timer.d/override.conf
[Timer]
OnCalendar=
OnCalendar=$update_dow$ 04:00
RandomizedDelaySec=300
EOM
...
So funktioniert es leider (logischerweise) nicht, denn woher soll das ShellScript wissen, daß es hier keine $-Skript-Variable ist, sondern der Wert aus dem opsi-script kommen soll.
Kann mir da jemand weiterhelfen?
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 10:40
von j.schneider
Hallo,
doch, das sollte genau so funktionieren.
In sekundären Sektion (ShellScript_unattended_upgrades ist eine sekundäre Sektion), werden definierte opsi-script-Variablen vor der Ausführung durch ihren Wert ersetzt.
Siehe:
https://docs.opsi.org/opsi-docs-de/4.3/ ... n-sections
Grüße
Jan Schneider
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 12:39
von anmith
Hallo,
dann habe ich wohl (noch) ein anderes Problem. Obiger Befehl erzeugt eine 0-Byte-Datei und im Log ist die Fehlermeldung
Code: Alles auswählen
/tmp/_opsiscript_0Z3ua70AOw.cmd: Zeile 5: Warnung: Das in der Zeile 5 beginnende Here-Dokument geht bis zum Datei
ende (erwartet wird »EOM«)
drin. Von daher hatte ich im ersten Ansatz darauf getippt, daß mit dem "$" irgendwas schief läuft.
Das temporäre Skript ist leider nicht mehr da zum Betrachten.
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 13:12
von j.schneider
Ich denke opsi-script interpretiert [Timer] als beginn einer neuen Sektion.
Das könnte ein Workaround sein:
Code: Alles auswählen
echo "[Timer]" > /etc/systemd/system/apt-daily.timer.d/override.conf
cat <<EOM >> /etc/systemd/system/apt-daily.timer.d/override.conf
OnCalendar=
OnCalendar=$update_dow$ 04:00
RandomizedDelaySec=300
EOM
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 13:33
von anmith
Ich hatte zwischenzeitlich noch
Code: Alles auswählen
echo "
[Timer]
OnCalendar=
OnCalendar=$update_dow$ 04:00
RandomizedDelaySec=300
" > /etc/systemd/system/apt-daily.timer.d/override.conf
versucht, was dann zu einem
Code: Alles auswählen
/tmp/_opsiscript_ujF37sP5W8.cmd: Zeile 5: Dateiende beim Suchen nach »"« erreicht.
führte.
Mit Ihrem Workaround funktioniert es aber - vielen Dank!
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 16:02
von SirTux
Wir machen sowas mit Patches-Sektionen. Ist IMO eleganter als das ShellScript-Geraffel und erspart einem das Escaping und ähnliche Geschichten. Das haben wir aber früher auch so gemacht.
https://docs.opsi.org/opsi-docs-de/4.3/ ... pt-patches
Re: opsi-script Variable in ShellScript
Verfasst: 06 Mär 2026, 16:52
von anmith
SirTux hat geschrieben: ↑06 Mär 2026, 16:02
Wir machen sowas mit Patches-Sektionen.
Danke für den Tip, werde ich mir mal ansehen!