ldapmaster のエントリを変更するために、リモート ホストから ldapmodify を実行しようとしています。mkntpwd バイナリが必要なので、ホストにはすでに slapd をインストールしています。サーバーは構成されておらず、ldap ツール用の ldap-utils もインストールされています。シェルからコマンドを実行すると正常に動作しますが、スクリプトからは動作しません。スクリプトから次のようにコマンドを実行しています。
.......
echo "dn: ou=xxx,dc=yyy,dc=zzz
changetype: modify
replace: attribute
attribute: ${newValue}" \
| ldapmodify -D "${ldapadmindn}" -w "${ldappassword}" -x -H ldaps://myldapmaster:636 >/dev/null 2>&1
.......
次のように ldif ファイルでも試してみました:
.......
(
echo "dn: ou=xxx,dc=yyy,dc=zzz"
echo "changetype: modify"
echo "replace: attribute"
echo "attribute: ${newValue}"
) >> file.ldif
ldapmodify -D "${ldapadmindn}" -w "${ldappassword}" -x -H ldaps://myldapmaster:636 -f file.ldif >/dev/null 2>&1
.......
残念ながら、どちらも私のスクリプトからは機能しませんでした。前述したように、どちらのバージョンもシェルからは正常に機能します。私が何を間違っているのか、ご存じですか?
よろしくお願いします
答え1
この問題は、echo コマンドに続く各行の先頭の空白を削除することで解決できました。ldif ファイルの問題はファイルが空ではなかったことですが、削除したら正常に動作しました。どうもありがとうございました。
問題は解決済みとしてマークできます