Hallo David, David Haller <dnh@opensuse.org> writes:
Hallo,
Am Son, 03 Jan 2010, Dieter Kluenter schrieb:
David Haller <dnh@opensuse.org> writes:
Am Son, 03 Jan 2010, Dieter Kluenter schrieb:
"Dieter Kluenter" <dieter@dkluenter.de> writes: [...] zu beachten ist hier der Space zwischen dem Attribut und dem Wert, der Space darf von grep nicht übermittelt werden, daher die Lösung mit cut.
Ah. Simpel.
Du hast halt sehr eigenartig gequoted bzw. die Befehle unübersichtlich verschachtelt.
Da wird meine Denkstruktur widergespiegelt :-)
==== [...] MASTER="Master.ldif" CSN="$(awk -F': ' '/contextCSN/{print $2;}' "$MASTER")" CSN="$(echo "$DATA" | awk -F': ' '/contextCSN/{print $2;}')" ### DNH: dummy-cmd COOKIE="rid=099,csn=${CSN}" # ### Alternativ zusammenfassen: # COOKIE="rid=099,csn=$(awk -F': ' '/contextCSN/{print $2;}' "$MASTER")"
Danke für die Hilfe, das erzielt das gewünschte Ergebnis.
"$SEARCH" -H "$HOST" -Y DIGEST-MD5 -U "$BINDDN" -w "$BINDPW" \ -b "$BASE" -s one -E"!sync=ro/${COOKIE}" "$ATTRS"
Bei diesem quoten der -E Parameter tritt ein Fehler auf, daher habe ich in meiner Version auf Quoten verzichtet. ,---- | ./synctest.sh | + SEARCH=/opt/openldap/bin/ldapsearch | + HOST=ldap://localhost | + BASE=o=avci,c=de | + BINDDN=replicator | + BINDPW=geheim | + ATTRS=1.1 | + MASTER=Master.ldif | ++ awk '-F: ' '/contextCSN/{print $2}' Master.ldif | + CSN=20100101163523.139663Z#000000#000#000000 | + COOKIE=rid=099,csn20100101163523.139663Z#000000#000#000000 | + /opt/openldap/bin/ldapsearch -H ldap://localhost -Y DIGEST-MD5 -U replicator | -w geheim -b o=avci,c=de -s sub | '-E!sync=ro/rid=099,csn20100101163523.139663Z#000000#000#000000' 1.1 `---- (Der Zeilenumbruch ist von mir) Wie du erkennst, wird der Parameter -E mit dem gesamten Rattenschwanz in single Ticks eingebunden, damit hat die BER-Kodierung dann Schwierigkeiten, denn die Ticks sind nicht ASN1-Konform.
Als Feld-Trenner könnte man auch ne Regex verwenden (das kann perl nicht beim auto-split ;), falls nach dem ':' mehr als ein Leerzeichen vorkommen kann, zusammen mit möglichen Tabs:
awk -F':[[:space:]]+' '/contextCSN/{print $2;}'
Das ist auch robust gegen ':' im CSN, nur ":" plus whitespace darf nicht vorkommen.
Der Doppelpunkt ':' ist Bestandteil von LDIF, es können auch zwei '::' wobei der erste ':' das Ende des Attributtyps markiert, der zweite ':' den Beginn eines base64-kodierten Wertes, daher lasse ich deine zweite Version lieber,
PS: ach, du bist auch ein Selbst-anpass-und-nach-/opt-Installierer? Ich verwende inzwischen vorzugsweise /opt/appname/version/ als prefix und Env-/Wrapperscripte in ~/bin/ oder /usr/local/bin (je nach Anwendungsfall). Alternativ /opt/appname-version + symlink /opt/appname.
Ja, so mache ich das auch, hier mal eine kleine Liste meines /opt Verzeichnisses: :/opt> ll insgesamt 44 apacheds-1.5.2 glassfish kde3 openldap openldap-2.4 opensso samba shibboleth web2ldap dieter@rubin:/opt> -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:8EF7B6C6 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org