gpt4 book ai didi

regex - 以自定义格式保存 ldapsearch 的 Bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:02 26 4
gpt4 key购买 nike

我正在尝试将 LDAP 上的每个用户回显到一个文本文件中,但使用的是自定义格式:

最终目标是具有以下格式:

uid=cn <mail>

举个例子:

jdoe=John Doe <john.doe@company.com>
jdoe1=Jane Doe <jane.doe@company.com>
...

我目前正在终端 (Ubuntu 14.04) 中执行以下操作:

echo `ldapsearch -x -h 127.0.0.1 -b "dc=company,dc=com" uid=* cn mail` >> ldap-users.txt

这得到了我需要的一切,但是格式如下:

# extended LDIF # # LDAPv3 # base <dc=company,dc=com> with scope subtree # filter: uid=* # requesting: cn mail # # jdoe, Special Users, company.com dn: uid=jdoe,ou=Special Users,dc=company,dc=com cn: John Doe User mail: john.doe@company.com # jdoe1, People, company.com dn: uid=jdoe1,ou=People,dc=company,dc=com cn: Jane Doe mail: jane.doe@company.com # ....... # search result search: 2 result: 0 Success # numResponses: 1387 # numEntries: 1386

注意:这一切都是一行吐出来的。

感谢任何帮助,

谢谢

编辑:所以通过研究更多我发现我可以做到:

ldapsearch -LLL -x -h 127.0.0.1 -b "dc=covisint,dc=com" uid=* cn mail

通过添加 -LLL,它不会在输出中打印 ldap 注释。结果为以下格式:

dn: uid=jdoe,ou=Special Users,dc=company,dc=com cn: John Doe User mail: john.doe@company.com ................... dn: blahblahblha... etc

所以这很有帮助,现在如果有办法删除“uid=”和“,ou=...,dc=company,dc=com”和“cn:”和“mail:”

最佳答案

它不是特别优雅,但通过以下管道传输 ldapsearch 命令的输出似乎适用于我刚刚尝试的快速和肮脏的测试:

| sed 's/uid=/\nuid=/'g | awk 'NR>2 { for( i=1; i<=NF; i++ ) { if ( $i ~ /uid=/ ) { printf "%s=", substr( $i, 5, index( $i, "," ) - 5 ) }; if ( $i ~ /cn:/ ) { printf "%s %s ", $(i+1), $(i+2) }; if ( $i ~ /mail:/ ) { printf "<%s>\n", $(i+1) }; } }'

关于regex - 以自定义格式保存 ldapsearch 的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com