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