您能帮我把这个命令放入 if 语句(bash 脚本)吗:
$ ldapmodify -D -h 密码:[输入密码] dn:cn=vipb,ou=groups,dc=example,dc=com changetype:修改添加:memberUid memberUid:fred
我尝试这样做,但是没有效果:
#!/bin/bash
if [ $1 = "blue" ] ; then
ldapmodify -D "cn=admin,dc=blue,dc=com" -w "Blue123" dn:cn=Blue-group,ou=Blue,dc=blue,dc=com changetype: modify add: memberUid memberUid: testblue
fi
还尝试过这个:
/bin/bash #!/bin/bash
if [ $1 = "blue" ] ; then
ldapmodify -D "cn=admin,dc=blue,dc=com" -w "Blue123"
dn:cn=Blue-group,ou=Blue,dc=blue,dc=com
changetype: modify
add: memberUid
memberUid: testblue
fi
答案1
Shell 脚本不会模拟键盘输入;它们会启动程序并等待这些程序完成。ldapmodify 下面的行不会成为其输入,而是单独的命令。
如果您想为 ldapmodify 提供输入,您需要专门使用脚本语法来执行此操作 - 例如<<
“heredoc”:
if [ $1 = "blue" ] ; then
ldapmodify -D whatever -w whatever <<'END'
dn: cn=foo
add: member
member: cn=bar
END
fi
或者通过另一个命令进行管道传输:
if [ $1 = "blue" ] ; then
(echo "dn: cn=foo"
echo "add: member"
echo "member: cn=bar") | ldapmodify -D whatever -w whatever
fi