ldap search function

2014-08-25 2 min read bash Learning

First you will need the ldap search utility. The client for ldap search comes in openldap-clients, so you need to install that first:

sudo yum install openldap-clients

Now, that you have installed it, try to find something in some open ldap server, example:

ldapsearch -LLL -h  db.debian.org   -x  -b "dc=debian,dc=org" "cn=Joao*"

This should list couple of entries for you. Now, that you have ldapsearch working, lets define a function in .bashrc file:

 

ldaps () 
{ 
    ( ldapsearch -LLL -h $2 -x -p 389 -b "$3" "cn=*$1*" | awk -F: 'BEGIN {
        last       = "NA"
        first      = "NA"
        name       = "NA"
        loc        = "NA"
        state      = "NA"
        postalcode = "NA"
        homephone  = "NA"
        telephonenumber = "NA"
        mail       = "NA"
        mobile     = "NA"
        printf(" last,first,full name,work#,e-mail,phone3\n");
}
/^sn: /              {last=$2}
/^givenName: /       {first=$2}
/^cn: /              {name=$2}
/^street: /          {address=$2}
/^l: /               {loc=$2}
/^st: /              {state=$2}
/^postalCode: /      {postalcode=$2}
/^homePhone: /       {homephone=$2}
/^telephoneNumber: / {telephonenumber=$2}
/^mail: /            {mail=$2}
/^mobile: /          {mobile=$2}
/^dn/ {
        if(last != "" && first != "" && last != "StoogeAdmin") printf("%s,%s,%s,%s,,%s,%s\n",last,first,name,telephonenumber,mail,mobile)
        last       = "NA"
        first      = "NA"
        name       = "NA"
        address    = "NA"
        loc        = "NA"
        state      = "NA"
        postalcode = "NA"
        homephone  = "NA"
        telephonenumber = "NA"
        mail       = "NA"
        mobile     = "NA"
}
# Capture last dn
END {
        if(last != "" && first != "" ) printf("%s,%s,%s,%s,,%s,%s\n",last,first,name,telephonenumber,mail,mobile)
}' ) | column -t -s ','
}

You might want to chagne few of the matches in the awk in the above script to suit your needs and then you can run this with :

ldaps    "searh string" "search host" "search base"
comments powered by Disqus