如何从 openldap 中 grep 某些属性?

如何从 openldap 中 grep 某些属性?

我正在使用 openldap,通常我会使用命令ldapsearch uid=<ldap> +来检查某些属性,通过运行这样的命令,它将产生完整的输出,例如:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
lastLoginTime: 20220829012233Z
passwordRetryCount: 0
retryCountResetTime: 20220826111616Z
passwordExpWarned: 0
passwordExpirationTime: 20220905092802Z
pwdUpdateTime: 20220707092802Z
modifyTimestamp: 20220707092802Z

例如,如果我只想 grep“retryCountResetTime”,我会尝试运行:

ldapsearch uid=<ldap> + | grep ^retryCountResetTime

但输出将是:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
retryCountResetTime: 20220826111616Z

我想通过添加 tail -1 来删除前 3 行(SASL),但是它不起作用。

有什么建议可以删除第 1-3 行吗?

答案1

作为@steeldriver提及评论

也许前三行根本不会进入标准输出流,而是进入标准错误流?

要验证是否可以将 STDERR 通道重定向到其他地方,例如在2>/dev/null命令末尾添加空设备:

command -options arguments 2>/dev/null | grep 'something'

如果您想要处理它,您可以通过添加以下内容将其重定向到 STDOUT 2>&1

command -options arguments 2>&1 | grep 'something'

请注意,如果您想将 STDERR 和 STDOUT 重定向到文件,语法为:

command -options arguments >/path/to/some.log 2>&1

相关内容