Ruby 将LDAP搜索结果转换为CSV

Ruby 将LDAP搜索结果转换为CSV,ruby,csv,search,ldap,ldap-query,Ruby,Csv,Search,Ldap,Ldap Query,我目前正在开发一个程序,该程序将LDAP搜索结果转换为CSV。我以前从未使用过LDAP,只使用过SQL,我觉得它有点挑战性 我很难将LDAP数据转换成能够很好地转换为CSV的表单。我一直在尝试使用我在SQL中学到的知识来帮助解决问题,但事实证明这有点挑战性 这是我正在使用的LDAP服务器 example.org 这是我用来获取数据的Ruby代码 ldap = Net::LDAP.new :host => '127.0.0.1', :port => 1300, :auth =

我目前正在开发一个程序,该程序将LDAP搜索结果转换为CSV。我以前从未使用过LDAP,只使用过SQL,我觉得它有点挑战性

我很难将LDAP数据转换成能够很好地转换为CSV的表单。我一直在尝试使用我在SQL中学到的知识来帮助解决问题,但事实证明这有点挑战性

这是我正在使用的LDAP服务器

example.org 这是我用来获取数据的Ruby代码

ldap = Net::LDAP.new  :host => '127.0.0.1',
  :port => 1300,
  :auth => {
    :method => :simple,
    :username => 'cn=admin,dc=example,dc=org',
    :password => 'mypassword'
}
filter = Net::LDAP::Filter.eq( "cn", "Chris*")
treebase = "dc=example,dc=org"

ldap.search( :base => treebase, :filter => filter ) do |entry|
  CSV.open("mysearch.csv", "w") do |csv|
  puts "DN: #{entry.dn}"
  entry.each do |attribute, values|
    search_array.push(attribute)
    values.each do |value|
     csv << [attribute, values]
     data_array.push(values)
    end
    end
  end
end
ldap=Net::ldap.new:host=>127.0.0.1',
:端口=>1300,
:auth=>{
:method=>:简单,
:username=>'cn=admin,dc=example,dc=org',
:password=>“我的密码”
}
filter=Net::LDAP::filter.eq(“cn”,“Chris*”)
treebase=“dc=example,dc=org”
搜索(:base=>treebase,:filter=>filter)do |条目|
CSV.open(“mysearch.CSV”,“w”)do | CSV|
放置“DN:#{entry.DN}”
entry.do每个属性、值|
搜索\数组.推送(属性)
值。每个do |值|

csv默认情况下返回的结果集有点特殊:

我会在新CSV文件的第一行添加属性名称,如下所示:

result_set = ldap.search( :base => treebase, :filter => filter )
CSV.open("mysearch.csv", "w") do |csv|
  csv << result_set.map { |entry| entry.attribute_names }
  result_set.each do |entry|
     csv << [entry.dn] # add what you need additionally to dn https://www.rubydoc.info/gems/ruby-net-ldap/Net/LDAP/Entry)
  end
end
result\u set=ldap.search(:base=>treebase,:filter=>filter)
CSV.open(“mysearch.CSV”,“w”)do | CSV|

csv默认情况下返回的结果集有点特殊:

我会在新CSV文件的第一行添加属性名称,如下所示:

result_set = ldap.search( :base => treebase, :filter => filter )
CSV.open("mysearch.csv", "w") do |csv|
  csv << result_set.map { |entry| entry.attribute_names }
  result_set.each do |entry|
     csv << [entry.dn] # add what you need additionally to dn https://www.rubydoc.info/gems/ruby-net-ldap/Net/LDAP/Entry)
  end
end
result\u set=ldap.search(:base=>treebase,:filter=>filter)
CSV.open(“mysearch.CSV”,“w”)do | CSV|

csv抱歉,但这不起作用,它说“keys”是一个未定义的方法。是的,我想说的是,该类原来是“Net::LDAP::Entry”。不幸的是,map也不起作用。这是一个棘手的问题。试着不要阻塞。我将在我的答案中添加该选项。很抱歉,这不起作用,它说“keys”是一个未定义的方法。是的,我要说的是该类原来是“Net::LDAP::Entry”。不幸的是,map也不起作用。这是一个棘手的问题。试着不要阻塞。我将在我的答案中添加选项。