Guest User

Untitled

a guest
Aug 19th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. # Configuration Constants (move to yaml ?)
  2. HOST = 'ad01.domain.local'
  3. PORT = 636
  4. USER = 'administrator'
  5. PASS = 'password'
  6. BASE = 'dc=domain, dc=local'
  7. DOMAIN = 'domain.local'
  8. SCOPE = '(&(objectCategory=person)(objectClass=user))'
  9.  
  10. require 'rubygems'
  11.  
  12. begin
  13. require 'net/ldap'
  14. rescue LoadError => err
  15. abort "Please run 'sudo gem install net-ldap' to enable connecting to LDAP."
  16. end
  17.  
  18. begin
  19. require 'fastercsv'
  20. rescue LoadError => err
  21. abort "Please run 'sudo gem install fastercsv' to enable connecting to LDAP."
  22. end
  23.  
  24. class CSVBuilder
  25. def initialize(head)
  26. if head.is_a?(Array)
  27. @head = head
  28. @rows = Array.new
  29. else
  30. raise 'Headers MUST be provided as an array'
  31. end
  32. end
  33.  
  34. def add_row(row)
  35. if row.is_a?(Array)
  36. @rows << FasterCSV::Row.new(@head,row)
  37. else
  38. raise 'Row MUST be provided as an array'
  39. end
  40. end
  41.  
  42. def export(filename='export.csv')
  43. f = File.open(filename,'w')
  44. f << FasterCSV::Table.new(@rows)
  45. f.close
  46. end
  47. end
  48.  
  49. ldap = Net::LDAP.new(
  50. :host => HOST,
  51. :port => PORT,
  52. :base => BASE,
  53. :encryption => :simple_tls,
  54. :auth => { :username => "#{USER}@#{DOMAIN}",
  55. :password => PASS,
  56. :method => :simple }
  57. )
  58.  
  59. users = ldap.search(:filter => SCOPE)
  60. csv = CSVBuilder.new(%w[username name email proxy])
  61.  
  62. users.each do |user|
  63. user_name = user[:samaccountname]
  64. disp_name = user[:displayname]
  65. email_ady = user[:mail]
  66. proxy_ady = user[:proxyaddresses]
  67. csv.add_row([user_name, disp_name, email_ady, proxy_ady])
  68. end
  69.  
  70. csv.export('ldap.csv')
Add Comment
Please, Sign In to add comment