我正在尝试自动化一个部分,其中我使用ldapsearch提取10-15个属性并将其格式化以在管道分隔的CSV文件中显示。
该脚本运行良好,我可以生成CSV文件;但是有一个小问题:每个用户返回的列数不相同(因为特定OU中的所有用户都不会设置所有15个属性)。
这是我的ldapsearch命令的示例:
/ usr / bin / ldapsearch -LLL -H ldaps://test-ldap.bip.dc.com -D testuser -w testpass -s sub -b" ou = users,ou = dc,o = COM" " CN = *" cn sn状态管理器部门userHireDate userTerminationDate userReHireDate userOfficeBuildingLocation userCountry | cut -d':' -f2 | sed':a; N; $ ba; s / \ n \ n /#/ g' | tr' \ n' ' |' | tr'#' ' \ n' | awk' /./' > testop.csv
问题在于,当我运行此脚本时,我得到如下输出:
约翰多| Doe |有效|亚伯拉罕林肯|洛杉矶 abelincoln |林肯|有效|本杰明富兰克林|治理| 2015年10月12日05:00 |伦敦对于已填充其他列的人,我会得到类似的字段 eddiemurphy |墨菲|活动|本杰明富兰克林|合规| 19/01/2016 05:00 | 04/05/2016 06:00 | 09/05/2016 05:00 |纽约| USA
这使得在我的数据仓库中更新非常困难;所以现在我依靠的是好的' Apache Directory Studio在执行LDAP搜索后生成CSV格式 - 不同之处在于Apache Directory工作室还包括空白列(例如userReHireDate / userTerminationDate,因为它不是为所有用户填充的)。但是,如果用户群为40K,那么每天手动生成报告会变得非常耗费资源。
所以我的问题很简单:是否有可能模仿Apache Directory Studio在导出LDAP数据时的行为(还包括未评估的属性)但是在命令行上?
我做了研究,并注意到ldapsearch有一个选项,其中包含所有属性,但没有显示它们的值;这对我来说并不是很有用,因为我需要一个仅适用于未评估属性的标志。
建议欢迎。