From: Ollivier Robert Date: 2001-03-02T02:40:02+09:00 Subject: [ruby-talk:11865] Re: LDAP module problem In article <200103011318.WAA26827@mailrelay.jaist.ac.jp>, Takaaki Tateishi wrote: > how about Entry#to_hash? (see also test/search3.rb) Thanks, that works. I've already tried it but it was also outside the scope of the search... Here my final script: -=-=- #! /usr/bin/env ruby # -*-Ruby-*- # ## Copyright 2001 Ollivier Robert # ## Gets the list of mail recipients from the LDAP server and generates ## a mutt compatible alias file. ## # ## 1.0 28/02/2001 first version # require 'ldap' ## Config. ldap_base = "ou=EEC, o=EUROCONTROL" ldap_filter = "(&(objectclass=inetOrgPerson)(objectclass=mailRecipient))" ldap_attrs = [ "sn", "givenname", "telephonenumber", "roomnumber", "mail", "uid", "ou", ] ldap_server = "ldap.eurocontrol.fr" users = Hash.new conn = LDAP::Conn.new (ldap_server, LDAP::LDAP_PORT) conn.bind { conn.perror ("bind") begin conn.search (ldap_base, LDAP::LDAP_SCOPE_SUBTREE, ldap_filter, ldap_attrs) { |e| users[e.vals("uid").to_s] = e.to_hash } rescue LDAP::ResultError => msg $stderr.print (msg) end uids = Array.new uids = users.keys users.keys.sort.each { |key| user = users[key].to_hash user["sn"] = user["sn"].to_s.capitalize print <<"EOTEXT" # Acronym: #{user['uid']} / Room: #{user['roomnumber']} / Phone: #{user['telephonenumber']} / COE: #{user['ou']} alias #{user['uid']} #{user['givenname']} #{user['sn']} <#{user['mail']}> EOTEXT } } -=-=- > but this method is experimental, so I will change the > name or specification of it in the future. I'll follow the developpement closely then :-) Domo arigato. -- Ollivier ROBERT -=- Eurocontrol EEC/ITM -=- roberto@eurocontrol.fr Usenet Canal Historique FreeBSD: The Power to Serve!