How To Query Ldap From Linux

Lightweight Directory Access Protocol (LDAP) is a protocol used to access and maintain distributed directory information services over an Internet Protocol (IP) network. In this blog post, we’ll guide you through the process of querying LDAP from a Linux environment and how to format the output as HTML. This can be particularly useful if you want to display the results in a more readable and structured way.

Before you start, ensure that you have installed the LDAP client utilities on your Linux system. If not, you can install these utilities using the following command:

sudo apt-get install ldap-utils

Step 1: Querying LDAP

First, we need to perform an LDAP query. The general syntax to query LDAP from Linux is as follows:

ldapsearch -x -LLL -H ldap://ldap.server.com -D cn=admin,dc=example,dc=com -w password -b 'dc=example,dc=com' '(objectClass=*)'

Replace ldap://ldap.server.com with the URL of your LDAP server. The -D option specifies the bind DN and -w provides the password. The -b option is used to specify the search base. ‘(objectClass=*)’ is the search filter and it is used to search for all objects.

Step 2: Formatting the Output as HTML

After running the above command, you will get the LDAP data in plain text. To format this data as HTML, you can use a scripting language like Python or Perl. Here is a simple Python script which reads LDAP data and outputs it in HTML format.

import sys
import ldap

def format_as_html(entry):
    output = ['<table>']
    for attribute, value_list in entry.items():
        for value in value_list:
            output.append('<tr><td>{}</td><td>{}</td></tr>'.format(attribute, value))
    output.append('</table>')
    return '\n'.join(output)

try:
    l = ldap.initialize('ldap://ldap.server.com')
    l.protocol_version = ldap.VERSION3
    l.simple_bind('cn=admin,dc=example,dc=com', 'password')
    result_id = l.search('dc=example,dc=com', ldap.SCOPE_SUBTREE, '(objectClass=*)', None)
    while 1:
        result_type, result_data = l.result(result_id, 0)
        if (result_data == []):
            break
        else:
            if result_type == ldap.RES_SEARCH_ENTRY:
                print(format_as_html(result_data[0][1]))
except ldap.LDAPError as e:
    print(e)

The code above will connect to the LDAP server, perform the search and display the results in an HTML table format. Please replace ‘ldap://ldap.server.com’, ‘cn=admin,dc=example,dc=com’, and ‘password’ with your actual LDAP server URL, bind DN, and password respectively.

And there you have it! A simple guide on how to query LDAP from Linux and format the output as HTML. You can easily customize the Python script to suit your requirements. Happy coding!