3

我有一个 bash 脚本,如果它存在于组中,则用于删除特定用户。

首先,我提取了所有组名并将其保存到一个文件中。作为下一步,我想我应该解析文件,并对所有条目使用 ldapsearch 命令并 grep 用户,如果存在,使用 ldapmodify 删除它。

我的问题是如何写 if 条件,即if [ *ldapsearch query* == True];then

这就是我的 ldapsearch 的样子,while 循环中的第一行是if语句。

while read grp;do
        ldapsearch -w 'ldappass' -D "cn=adminuser,dc=some-domain,dc=com"  -b "cn=$grp,ou=group,dc=some-domain,dc=com"  | grep $someuser
done</home/someuser/tempfile.txt

在 CLI 上,此 ldapsearch 查询返回以下输出;

memberUid: testuser

所以本质上,如果if语句返回一些值(即用户存在),那么我必须删除用户。如何获得正确的if语句以获取 ldapsearch 查询的 True 或 False 结果?

4

1 回答 1

3

您可以使用该-z选项来检查字符串是否为空。[ -z "$string" ]如果字符串为空,则为真。然后,这可以使它:

if [ ! -z "$(yourcommand)" ]; then
    do_things
fi

例如说我们要检查一个目录是否为空:

if [ ! -z "$(ls)" ]; then
   echo "there is something"
else
   echo "this dir is empty"
fi

全部一起:

while IFS= read -r grp;do
   if [ ! -z "$(ldapsearch -w 'ldappass' -D "cn=adminuser,dc=some-domain,dc=com"  -b "cn=$grp,ou=group,dc=some-domain,dc=com" | grep $someuser)" ]; then
      remove $someuser
   fi
done < /home/someuser/tempfile.txt
于 2013-08-13T09:00:31.817 回答