Univention Bugzilla – Bug 14873
Shell-Bibliothek für Join-Skripte
Last modified: 2009-12-21 08:48:15 CET
Die Teile der Join-Skripte, die den Join-Status prüfen und aktualisieren könnten in eine kleine Shell-Bibliothek integriert werden. Dadurch liessen sich systemweite Änderungen einfacher umsetzen, z.B: check_if_joined test_join_status $VERSION log_successful_join $VERSION Über diesen Weg liesse sich auch die spätere Umstellung der Join-Skript, so dass direkt in /var/univention-join/status geschrieben wird, einfach umsetzen (d.h. nicht mehr über den Umweg des Symlinks)
/usr/share/univention-join/joinscripthelper.lib im Paket univention-join enthält jetzt die Bibliothek. Doku gibts hier: https://billy.knut.univention.de/uniwiki/index.php/Joinskripte Changelogeintrag ist gemacht.
Reopen: Es fehlen Anführungszeichen in den Zeilen: 40,44,48,49,59,60,71,73,81,82,84,97,114 Das Konstrukt "test -n `grep `" ist sehr uneffizient und kann leicht durch "grep -qs" ersetzt werden: test -n "`grep -e "${JS_PACKAGE} v[0-9]\+ successful" $JS_STATUSFILE`" wird zu: grep -qs -e "${JS_PACKAGE} v[0-9]\+ successful" $JS_STATUSFILE (Zeilen: 49,60) Anstatt einfach den Exit-Code des letzten Befehls als Rückgabewert zu verwenden, sollte ein if-Konstrukt verwendet werden, um Stabilität, Lesbarkeit, und Wartbarkeit zu verbessern. (Zeilen: 49,60) Anstatt den exit-Code mit "$?" abzufragen sollte der Befehl direkt in einem if ausgeführt werden: joinscript_check_any_version_executed if [ $? -ne 0 ]; then wird zu if joinscript_check_any_version_executed; then (Zeilen: 91) Zeile 107: if ! test -e "/usr/share/univention-join/.joined" sollte zu if [ ! -e "/usr/share/univention-join/.joined" ] werden. Außerdem sollte geprüft werden, ob "-f" nicht eventuell sinnvoller als "-e" ist. Anstatt "&&" bzw. "||" sollte ein if-Konstrukt verwendet werden. (Zeilen: 73,82,114) Im Wiki steht JS_GET_LAST_EXECUTED_VERSION - im Code steht JS_LAST_EXECUTED_VERSION In joinscript_init solte geprüft werden, ob VERSION -ge 1 gesetzt ist.
Korrigierte Version r11753
Verified: Funktioniert einwandfrei. Im Wiki bitte noch die Parameter der drei Funktionen # joinscript_check_any_version_executed () # joinscript_check_specific_version_executed () # joinscript_check_version_in_range_executed () dokumentieren. univention-join 2.0.11-1.272.200909151157
Wieder auf, bis das dokumentiert ist.
https://billy.knut.univention.de/uniwiki/index.php/Joinskripte#Joinskript-Bibliothek enthält jetzt die Beschreibung zu jeder Funktion.
(In reply to comment #4) > Im Wiki bitte noch die Parameter der drei Funktionen > # joinscript_check_any_version_executed () > # joinscript_check_specific_version_executed () > # joinscript_check_version_in_range_executed () > dokumentieren. (In reply to comment #5) > Wieder auf, bis das dokumentiert ist. Verified: Wurde Dokumentiert
Nach der Installation vom AD-Connector ist aufgefallen das im Joinscript VERSION="1" gesetzt wurde. Eigentlich hätte es VERSION=1 heißen müssen. Eventuell sollte da behoben werden.
(In reply to comment #8) > Nach der Installation vom AD-Connector ist aufgefallen das im Joinscript > VERSION="1" gesetzt wurde. Eigentlich hätte es VERSION=1 heißen müssen. > Eventuell sollte da behoben werden. Die Helper-Lib sollte auch mit Anführungszeichen (einfache und doppelte) umgehen können, die hinter VERSION= stehen. Ebenso Whitespaces, falls dies noch nicht der Fall ist.
Neues Verhalten: (so jetzt auch im Wiki) Versionsdefinitionen müssen der grep-regex "^[[:space:]]*VERSION=([1-9][0-9]*|\"[1-9][0-9]*\"|'[1-9][0-9]*')[[:space:]]*$" entsprechen, damit die Verwendung der joinscripthelper.lib von außerhalb eines Joinskripts (siehe weiter unten) funktioniert. Dabei wird im Falle von mehreren solcher Definitionen nur die letzte beachtet.
(In reply to comment #10) > Neues Verhalten: (so jetzt auch im Wiki) > > Versionsdefinitionen müssen der grep-regex > > "^[[:space:]]*VERSION=([1-9][0-9]*|\"[1-9][0-9]*\"|'[1-9][0-9]*')[[:space:]]*$" > > entsprechen, damit die Verwendung der joinscripthelper.lib von außerhalb eines > Joinskripts (siehe weiter unten) funktioniert. Dabei wird im Falle von mehreren > solcher Definitionen nur die letzte beachtet. Funktioniert
UCS 2.3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".