Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解Python ldap中的命名冲突_Python_Python 2.7_Openldap_Ldap Query - Fatal编程技术网

了解Python ldap中的命名冲突

了解Python ldap中的命名冲突,python,python-2.7,openldap,ldap-query,Python,Python 2.7,Openldap,Ldap Query,我有一组需要保存的差异,它们都是新记录。以下代码用于提交更改集: def commit(self): l = ldap.initialize(self.ldapURL) l.simple_bind_s(self.ldapUser,self.ldapPass) for dn,ldif in self.ldapAdds.iteritems(): try: print json.dumps(ldif,indent=4)

我有一组需要保存的差异,它们都是新记录。以下代码用于提交更改集:

def commit(self):
    l = ldap.initialize(self.ldapURL)
    l.simple_bind_s(self.ldapUser,self.ldapPass)
    for dn,ldif in self.ldapAdds.iteritems():
        try:
            print json.dumps(ldif,indent=4)
            l.add_s(dn,ldif)
            print "a",
        except ldap.ALREADY_EXISTS:
            pass

    for dn,ldif in self.ldapMods.iteritems():
        l.modify_s(dn,ldif)
        print "m",
    print ""
    l.unbind_s()
    self.ldapAdds = dict()
    self.ldapMods = dict()
不幸的是,我遇到以下错误:

回溯最近一次调用:File./ldapUpdate.py,第868行, 在里面 lMods.commit文件。/ldapUpdate.py,commit中的第769行 l、 添加ldif文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py, 第216行,添加 返回self.add_ext_sdn,modlist,None,None文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py, 第202行,添加外部 resp_type,resp_data,resp_msgid,resp_ctrls=self.result3msgid,all=1,timeout=self.timeout文件 /sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py, 第519行,结果3 resp_ctrl_classes=resp_ctrl_classes文件/sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py, 第526行,结果4 ldap\u result=self.\u ldap\u callself.\u l.result4,msgid,all,timeout,add\u ctrls,add\u mediates,add\u extop 文件 /sites/utils/Python/lib/python2.7/site-packages/ldap/ldapobject.py, 第108行,in_ldap_调用 result=func*args,**kwargs ldap.NAMING_冲突:{'info':命名属性'src'没有相等匹配规则'desc': “命名冲突”}

失败的ldiff记录如下所示:

[
    [  "src",   "ecare/ecare-self.ear" ], 
    [  "modname",  "ecare-self"  ], 
    [  "dest",   "/sites/MODULES/ecare/ecare-self.ear"], 
    [  "objectClass",  [  "ctlapp", "ctlmodule", "top" ] ], 
    [  "action",  "rsync" ], 
    [  "depot",  "DEPOT" ]
]
SLAPD不喜欢的src字段是什么?是否有人对命名违规有更深入的了解

src在模式中有此定义

attributetype ( 1.3.6.4.2.7888.5.1.16 NAME 'src'
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
                X-ORIGIN 'user defined' )
objectclass ( 1.3.6.4.2.7888.5.1.22 NAME 'ctlapp'
                DESC 'ATT deployable component'
                SUP ctlmodule STRUCTURAL
                MUST ( src $ depot $ dest $ action )
                X-ORIGIN 'user defined' )
ctlapp在架构中具有此定义

attributetype ( 1.3.6.4.2.7888.5.1.16 NAME 'src'
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
                X-ORIGIN 'user defined' )
objectclass ( 1.3.6.4.2.7888.5.1.22 NAME 'ctlapp'
                DESC 'ATT deployable component'
                SUP ctlmodule STRUCTURAL
                MUST ( src $ depot $ dest $ action )
                X-ORIGIN 'user defined' )

src的正确模式定义应为:

attributetype ( 1.3.6.4.2.7888.5.1.16 NAME 'src'
                DESC 'ATT source path'
                EQUALITY caseExactMatch
                SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512}
                X-ORIGIN 'user defined' )
平等条款缺失了。这就是违反命名规则的原因