Ich schreibe ein Bash-Skript, um die Anzeigenamen für Benutzer zurückzugeben. Wenn ich den Befehl auf der Konsole ausführe, erhalte ich den Anzeigenamen. Wenn ich das Skript ausführe, das Eingaben aus einer Textdatei liest, erhalte ich den Anzeigenamen nicht.ldapsearch Ausgabe in eine Textdatei
Für [email protected], der Anzeigename ist wie: Khbsd Muweu
Die Eingangstextdatei (names.txt) enthält die folgenden Daten:
"[email protected]"
"[email protected]"
"[email protected]"
Das Skript ist als unten:
while IFS='' read -r line || [[ -n "$line" ]]
do
echo "$line"
ldapsearch -v -LLL -Y GSSAPI -H ldap://padns1.abc.com -b "dc=abc,dc=com" userPrincipalName="$line" displayName -Q | grep "displayName: .*$" | awk '{print $2,$3}'
done < "$1"
Dieses Skript als fnames.sh und das Skript gespeichert wird, ausgeführt wird:
bash fnames.sh names.txt
Das Echo "$ line" druckt den Inhalt aus der Textdatei, aber der Befehl ldapsearch funktioniert nicht. Kann mir jemand sagen, wo ich falsch liege? Ich möchte die Ausgabe des Befehls (nur den Anzeigenamen) in einer Textdatei speichern. Wie kann ich das machen?
Haben Sie versucht, 'set -x' zu Ihrem Skript hinzuzufügen? Es ist eine schnelle Möglichkeit zu überprüfen, ob Ihr Skript das tut, was Sie erwarten. – eduffy