Here's a code example from Will using python to access GTED.
#!/usr/bin/python
import sys
import pygted ## local class for gted queries
## gted username and password location
gted_user = "foo-gtaccess"
gted_pwfile = "/opt/etc/foo-gtaccess.secret"
## setup connection to gted
gted = pygted.GTED(binduser=gted_user, pwfile=gted_pwfile)
## field to look at
field = "gtPrimaryEmailAddress"
## query filter
user = sys.argv[1]
filter = "uid=%s" % user
result=gted.query(filter, field)
if result:
## ldap results can be a list of multiple matching entries;
## each is dn,dict pair
for id,attr in result:
print attr[field]
Here is the class file __init__.py
import ldap
class GTED:
"""Query GTED"""
def __init__(self, binduser, bindpw=None, pwfile=None, url=None, base=None, scope=None):
"""Requires binduser, and either bindpw or pwfile"""
if url is None:
url = "ldaps://r.gted.gatech.edu"
if base is None:
base = "ou=accounts,ou=gtaccounts,ou=departments,dc=gted,dc=gatech,dc=edu"
if scope is None:
scope = ldap.SCOPE_ONELEVEL
self.binduser = binduser
self.bindpw = bindpw
self.pwfile = pwfile
self.url = url
self.base = base
self.scope = scope
if "," not in self.binduser:
self.binduser="uid=%s,ou=Local Accounts,dc=gted,dc=gatech,dc=edu" % binduser
if self.bindpw is None and self.pwfile is not None:
fp = open(self.pwfile)
self.bindpw = fp.read().strip()
self.handle = ldap.initialize(self.url)
self.handle.simple_bind_s(self.binduser, self.bindpw)
def query(self, filter, attrs=None):
if attrs and isinstance(attrs, str):
if "," in attrs:
attrs = [x.strip() for x in attrs.split(",")]
else:
attrs = [attrs]
res = self.handle.search_s(self.base, self.scope, filter, attrs)
return res