Comment dois-je transmettre un mot de passe pour ldapsearch
utiliser l' -y <password file>
option?
Si j'écris le mot de passe dans le fichier de mots de passe en texte brut, j'obtiens cette erreur:
ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772
La même chose se produit si j'utilise l' -w <password>
option.
EDIT :
La commande que j'exécute est
ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"
Où le fichier .pass.txt
contient mon mot de passe, en texte brut. Le DN et le mot de passe sont corrects. Si j'exécute la commande avec l' -W
option et que je tape le mot de passe à l'invite, la commande s'exécute avec succès, mais je voudrais en quelque sorte stocker le mot de passe pour créer un script.
Réponses:
Gardez à l'esprit que ldapsearch utilisera l'intégralité du contenu du fichier pour le mot de passe - ce qui signifie qu'il inclura un caractère de fin de ligne s'il en existe un. Pour vérifier s'il s'agit bien de votre problème, essayez de créer un fichier sans celui-ci:
( MISE À JOUR : '-n' inclus)
la source
echo -n
ouprintf
pour éviter la nouvelle ligne.sed
Cependant, je viens de supprimer la fin d'un fichier existant.En supposant qu'il s'agit du retour à la ligne / chariot, essayez ce qui suit:
Utilisez ensuite le fichier .pass2.txt. Vous pouvez toujours vérifier les nouvelles lignes et les retours chariot avec
cat -vE
et ils apparaîtront respectivement comme $ et ^ M.Vous pouvez aussi probablement le faire
-y <(cat .pass.txt | tr -d '\n\r')
directement dans la commande ldapsearch.la source
ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass.txt -H ldap://ldap.domain.com -b dc=domain,dc=com
Vous devrez peut-être chmod 600 pass.txt
la source
Il n'est pas nécessaire de sauvegarder le mot de passe dans un fichier réel. Faites-le simplement écho avec l'indicateur -n pour empêcher la nouvelle ligne, puis lisez-le dans le descripteur de fichier STDIN (/ dev / fd / 0) comme suit:
la source