我正在从 Python 脚本运行 ldaplist 命令(不足以保证 ldap 模块):
storage = Popen(["ldaplist", "-l", "passwd", "bob"], stdout=PIPE, stderr=PIPE)
stdout, stderr = storage.communicate()
在此之后,我想根据“stderr”是否与 ldaplist 中的典型“没有这样的用户”错误(即“ldaplist:找不到对象”)相匹配来采取行动
这不起作用:
if stderr == "ldaplist: Object not found":
print "No entry exists in passwd for the username you have input."
sys.exit(1)
然而,这确实:
if re.search("^ldaplist: Object not found", stderr):
print "No entry exists in passwd for the username you have input."
sys.exit(1)
“不起作用”是指它不属于 if 块,因此它继续执行其余代码并遇到各种错误,因为其余代码期望填充 stdout (如果 stderr 有任何价值,那就不是)。
我认为这与我上面失败的片段无关,但具体的错误是:
Traceback (most recent call last):
File "./ldaplistTest3.py", line 43, in <module>
testPasswd = Passwd(dn, sambaProfilePath, sambaHomePath)
NameError: name 'dn' is not defined
(dn 没有定义,因为代码应该永远不会到达那个点)