ruby - 将 LDAP 搜索结果转换为 CSV
问题描述
我目前正在开发一个获取 LDAP 搜索结果并将其转换为 CSV 的程序。我以前从未使用过 LDAP,只使用过 SQL,我觉得它有点挑战性。
我无法将 LDAP 数据转换为可以很好地转换为 CSV 的表单。我一直在尝试使用我在 SQL 中学到的知识来提供帮助,但事实证明这有点挑战性。
这是我正在使用的 LDAP 服务器。
例子.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example
# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: mypassword
# people, example.org
dn: ou=people,dc=example,dc=org
objectClass: organizationalUnit
ou: people
# chris, people, example.org
dn: uid=jane,ou=people,dc=example,dc=org
objectClass: inetOrgPerson
cn: Chris
sn: smith
mail: chris@example.org
uid: chris
这是我用来尝试获取数据的 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
如何让标题在页面顶部排列,而不是垂直排列?任何人的任何指示/建议?
解决方案
默认返回的结果集有点特殊: https ://www.rubydoc.info/gems/ruby-net-ldap/Net/LDAP/Entry
我将在新 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
PS 也许你需要使用 result_set.first.attribute_names 而不是地图线。
推荐阅读
- angular - 运行包含 Selenium 代码的测试时量角器出现意外控制台错误
- angular - 在本机脚本中找不到名称 com
- php - 如何根据组合框中的选择将值插入到添加到不同列的数据库表中
- c# - 如何在 Outlook 任务窗格 VSTO 中显示标签
- android - 适用于 android 的 Google ML kit Barcode Scanner 示例应用程序无法检测到条形码
- android - 显示消息后如何取消EditText的文本更改?
- javascript - Ionic 2 可重用的页面组件
- html - 如何使用 XSLT 1.0 将 XML 层次结构转换为表?
- javascript - 如何在单选按钮单击功能上添加特定 ID?
- python - 在 RASA NLU 中用不同的训练数据训练相同的模型