我正在编写一个应用程序脚本,它可以帮助用户绑定到我们服务器的打开目录(如果不存在的话)。它将测试命令的输出是否为空,并帮助删除任何旧的打开的目录并添加新的目录。在某些条件下不执行的命令
我遇到了一些问题,如果脚本遇到某些情况,我应该如何将新的域名添加到Open Directory Server。我究竟做错了什么?见例子输出...
#!/bin/bash -x
# FUNCTIONS
# Verify that foo.com exists
function check_new() {
# LOCAL VARIABLES
OLD="bar.com"
NEW="foo.com"
for i in `dscl localhost -list /LDAPv3`; do
if [[ $i != 0 ]]; then
dsconfigldap -v -r ${OLD} && dsconfigldap -v -a ${NEW}
else
dsconfigldap -v -a ${NEW}
fi
done
}
# MAIN CODE
exec 1> >(logger -s -t $(basename $0)) 2>&1
check_new; exit 0
样本输出
案例1)无服务器存在(返回什么,如果我们不扩大$?
退出状态。我们应该添加新的域名。
$ dscl localhost -list /LDAPv3; echo $?
0
情况2)旧服务器存在。我们应该删除旧服务器并添加新服务器。
$ dscl localhost -list /LDAPv3; echo $?
bar.com
0
案例3)旧的和新的服务器存在。忽略新服务器并删除旧服务器。
$ dscl localhost -list /LDAPv3; echo $?
foo.com
bar.com
0
情况4)存在NEW服务器。没做什么。
$ dscl localhost -list /LDAPv3; echo $?
foo.com
0
请提供'dscl localhost -list/LDAPv3'的示例输出。 – Gene
感谢您指出这一点,基因。根据要求添加样本输出。 – Tan
“else”语句的第二个条件并不清楚,但是您什么时候认为'i'将等于0?'i'被设置为由'dscl'按顺序返回的每个单词,并且该输出似乎只包含域名,从来没有整数0. – chepner