Wrapper around good ol' python-ldap.
Go to file
nanu2 2b44855f02 README.md to README.rst 2014-09-16 12:56:27 +02:00
ldappr fixed pretty print binary attr 2014-09-16 12:40:26 +02:00
.gitignore ignore MANIFEST 2014-09-16 12:52:39 +02:00
CHANGES.txt README.md to README.rst 2014-09-16 12:56:27 +02:00
LICENSE.txt first commit after rename 2014-09-14 15:24:19 +02:00
MANIFEST README.md to README.rst 2014-09-16 12:56:27 +02:00
MANIFEST.in added changes 2014-09-16 12:39:27 +02:00
README.rst md to rst 2014-09-16 12:51:28 +02:00
setup.py README.md to README.rst 2014-09-16 12:56:27 +02:00

README.rst

Ldappr
======

|PyPI version|

| Ldappr is a wrapper around python-ldap, meant for quick and easy
handling of
| common administrative tasks concerning your LDAP compliant repository.
It is
| particularly useful in small, one-time scripts to get things done, or
| interactively within an iPython shell.

Installation
------------

Of course, python-ldap is supposed to be already installed.

::

    pip install ldappr

Connect
-------

.. code:: python

    import ldappr

    # authenticated bind
    ldap = ldappr.connect_to('127.0.0.1', 'uid=admin,ou=system', 'secret')

Retrieve objects
----------------

When you have a connection, you can search on it. First, specify the
seach base.

.. code:: python

    ldap.search_base = 'ou=users,ou=system'

Then, get one or more objects to manipulate.

.. code:: python

    # retrieve a single object
    user = ldap.get('cn=jdoe')

    # retrieve a list of objects
    users = ldap.search('objectClass=inetOrgPerson')

Do stuff
--------

| Once you got an object, you can easily manipulate it. All changes will
| immediately reflect in your LDAP repository.

.. code:: python

    # pretty print the retrieved user
    print(user)

    # get an attribute value
    sn = user.attrs['sn']

    # set an attribute value (existing value will be removed)
    user.set_value('givenName', 'Jack')

    # add a value to a multi-valued attribute
    user.add_value('mobile', '0123456789')
    user.add_value('mobile', '9876543210')

    # remove a value from a multi-valued attribute
    user.remove_value('mobile', '9876543210')

Other examples
--------------

.. code:: python

    # anonymous bind
    ldap = ldappr.connect_to('127.0.0.1')

    # authenticated bind with more options
    ldap = ldappr.connect_to('127.0.0.1', 'uid=admin,ou=system', 'secret',
                              protocol='ldaps', port='10636', verify=False, 
                              search_base='ou=users,ou=system')

    # delete all objects with employeeType manager
    for dn in ldap.get_dn('employeeType=manager'):
        ldap.delete(dn)

    # set an attribute value for a known dn
    ldap.set_value('cn=jdoe,ou=users,ou=system', 'givenName', 'Jack')

    # make an LDIF export for all users
    with open('export.ldif', 'a') as file:
        for user in ldap.search('objectClass=inetOrgPerson'):
            file.write(user.to_ldif())

.. |PyPI version| image:: https://badge.fury.io/py/ldappr.svg
   :target: http://badge.fury.io/py/ldappr