PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Shellscripten und dem Cron



Ravetracer
06.03.06, 20:13
Ich weiß nicht genau, wo ich das hinschreiben soll, aber da es sich auch um LDAP
handelt, poste ich mal hier:

Ich habe ein Problem mit Shellscripten und dem Cron.
Wenn ich folgendes mit Cron ausführe (Auszug aus dem Code):



dic_cnt=`ldapsearch -s sub -LLL -H "ldap://${dic_ldapserver}" -x cn=${grp_prefix}${dic_hostname} member | grep -ci ${dic_userid}`
echo "cnt: ${dic_cnt} :"
echo "user_id : ${dic_userid}: "


Bekomme ich das Ergebnis "0".

Wenn das Beispiel jedoch normal von Konsole gestartet wird, funktioniert
alles ohne Probleme?
Ach ja, und wenn ich das GREP hinten weglasse, funktioniert die Ausgabe auch. Auch ein Echo mit ${dic_userid} gibt mir ein positives Ergebnis zurück, sie existiert. (Eben die UserID)
Wie kann das sein?

Gruß,
Christian


PS: der Cron wird natürlich als root gestartet

WolverineJR
07.03.06, 07:41
Wie sieht denn die absolut erste Zeile deines Scriptes aus?

Ravetracer
07.03.06, 07:51
Naja, logischerweise:

#!/bin/bash

Gruß,
Christian.

marce
07.03.06, 08:18
gib mal bei allen Aufrufen die kompletten Pfade mit an oder setze den PATH entsprechend...

Ravetracer
07.03.06, 09:01
Naja, an den Pfaden kanns auch nicht liegen.
mit "grep -civ" bekomme ich nämlich Werte zurückgeliefert, und zwar
komischerweise alle (auch der, den ich eigentlich suche/ausschließe).

Ich check das nicht. :confused:

WolverineJR
07.03.06, 09:45
Also ich kann mit der ldap-Syntax leider nicht viel anfangen. Aber liefert der ldap-Aufruf deines Skriptes OHNE den grep mehrere Werte oder nur ein Wert zurück?

Vielleicht wäre es ganz hilfreich, wenn Du den Output des Scriptes der einzelnen Variablen mal schreibst.

Ravetracer
07.03.06, 09:58
Also gut.
Der Output von ldapsearch gibt mir alle Mitglieder der angegebenen Gruppe
korrekt zurück.
Das Mitglied, welches ich suche, ist auch vorhanden, wird aber beim Filtern
mit grep ignoriert, warum auch immer.

Output-Beispiel:


member: cn=125,ou=DieFirma, o=Hiersindwir
member: cn=472,ou=DieFirma, o=Hiersindwir
member: cn=873,ou=DieFirma, o=Hiersindwir


Die Variable $dic_userid im Script enthält z.B. die 472.
Mit grep -ci "472" bekomme ich genau "1" zurück.
Mit grep -ci "$dic_userid" wird das einfach ignoriert.
Den Ausdruck kann ich schreiben wie ich will


grep -ci "$dic_userid"
grep -ci "${dic_userid}"
grep -ci $dic_userid
grep -ci ${dic_userid}

, es klappt aber nicht. Das bringts irgendwie alles nicht.
Hab schon einige Shellscripte geschrieben, aber sowas hab ich noch nicht
erlebt.

Gruß,
Christian