ldif文件的格式和操作
对 LDIF 文件进行查错
了解 LDIF
LDIF 是一种普遍使用的文件格式,用来描述目录信息或可对目录执行的修改操作。LDIF 完全独立于在所有特定目录中使用的储存格式,LDIF 通常用于从 LDAP 服务器导出目录信息或将数据导入 LDAP 服务器。
LDIF 是一种普遍使用的文件格式,用来描述目录信息或可对目录执行的修改操作。LDIF 完全独立于在所有特定目录中使用的储存格式,LDIF 通常用于从 LDAP 服务器导出目录信息或将数据导入 LDAP 服务器。
LDIF 一般很容易生成。因此,可以借助于一些工具(如 awk 或 perl)将专有格式的数据移入 LDAP 目录。也可以编写脚本来生成 LDIF 格式的测试数据。
LDIF 文件格式
Novell 导入转换导出导入需要 LDIF 1 格式的文件。以下是 LDIF 1 文件的基本规则:
Novell 导入转换导出导入需要 LDIF 1 格式的文件。以下是 LDIF 1 文件的基本规则:
第一个非注释行必须是版本号:1.
版本号后面跟有一个或多个记录。
每个记录由多个字段组成,一行一个字段。
版本号后面跟有一个或多个记录。
每个记录由多个字段组成,一行一个字段。
各行使用换行符或回车符/换行符对分隔。
各记录由一个或多个空行分隔。
存在两种不同类型的 LDIF 记录:内容记录和更改记录。对 LDIF 文件可以包含的记录数目没有限制,但它们必须属于同一类型。在同一个 LDIF 文件中不能既有内容记录又有更改记录。
以井字符 (#) 开头的行是注释行,在处理 LDIF 文件时将被忽略。
各记录由一个或多个空行分隔。
存在两种不同类型的 LDIF 记录:内容记录和更改记录。对 LDIF 文件可以包含的记录数目没有限制,但它们必须属于同一类型。在同一个 LDIF 文件中不能既有内容记录又有更改记录。
以井字符 (#) 开头的行是注释行,在处理 LDIF 文件时将被忽略。
LDIF 内容记录
LDIF 内容记录代表整个项的内容。以下是 LDIF 文件示例,共包含四个内容记录:
LDIF 内容记录代表整个项的内容。以下是 LDIF 文件示例,共包含四个内容记录:
1 version: 1
2 dn: c=US
3 objectClass: top
4 objectClass: country
网上购票如何取票5
6 dn: l=San Francisco, c=US 物资采购管理制度
办理信用卡需要什么条件
2 dn: c=US
3 objectClass: top
4 objectClass: country
网上购票如何取票5
6 dn: l=San Francisco, c=US 物资采购管理制度
办理信用卡需要什么条件
7 objectClass: top 神武反制宠
8 objectClass: locality
9 st: San Francisco
10
11 dn: ou=Artists, l=San Francisco, c=US
12 objectClass: top
13 objectClass: organizationalUnit
14 telephoneNumber: +1 415 555 0000
15
16 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
17 sn: Michaels
18 givenname: Peter
19 objectClass: top
20 objectClass: person
21 objectClass: organizationalPerson
8 objectClass: locality
9 st: San Francisco
10
11 dn: ou=Artists, l=San Francisco, c=US
12 objectClass: top
13 objectClass: organizationalUnit
14 telephoneNumber: +1 415 555 0000
15
16 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
17 sn: Michaels
18 givenname: Peter
19 objectClass: top
20 objectClass: person
21 objectClass: organizationalPerson
22 objectClass: iNetOrgPerson
23 telephonenumber: +1 415 555 0001
24 mail: Peter.Michaels@aaa
25 userpassword: Peter123
26
23 telephonenumber: +1 415 555 0001
24 mail: Peter.Michaels@aaa
25 userpassword: Peter123
26
此 LDIF 文件由以下部分组成:
表 135. LDIF 文件组成部分
部分 说明
葫芦丝教程版本限定符
LDIF 文件的第一行包含版本号。冒号和版本号(当前定义为 1)之间可以无空格,也可以有多个空格。
葫芦丝教程版本限定符
LDIF 文件的第一行包含版本号。冒号和版本号(当前定义为 1)之间可以无空格,也可以有多个空格。
如果缺少版本行,允许任何处理 LDIF 文件的应用程序将该文件的版本号假定为 0。但是也
可能因为语法上的错误而拒绝处理该 LDIF。如果缺少版本行,处理 LDIF 的 Novell 实用程序将假定文件的版本号为 0。
判别名限定符
每个内容记录的第一行(如上面示例中的第 2、6、11 和 16 行)指定所代表的项的 DN。
判别名限定符
每个内容记录的第一行(如上面示例中的第 2、6、11 和 16 行)指定所代表的项的 DN。
DN 限定符必须使用以下两种格式之一:
dn:安全 UTF-8 判别名
dn::Base64 编码的判别名
dn::Base64 编码的判别名
行分界符
任嘉伦主演的电视剧有哪些行分隔符可以是换行符或回车符/换行符对。这就解决了 Linux* 和 Solaris* 文本文件(将换行符用作行分隔符)与 MS-DOS 和 Windows* 文本文件(将回车符/换行符对用作行分隔符)间常见的不兼容问题。
记录分界符
使用空行(如上面记录中的第 5、10、15 和 26 行)作为记录分界符。
使用空行(如上面记录中的第 5、10、15 和 26 行)作为记录分界符。
LDIF 文件中的每个记录(包括最后一个记录)必须使用记录分界符(一个或多个空行)作为终止。虽然某些情况也会默认地接受没有终止记录分界符的 LDIF 文件,但 LDIF 规范要求使用终止记录分界符。
特性值限定符
内容记录中所有其它的行均是值限定符。值限定符必须使用以下三种格式之一:
特性值限定符
内容记录中所有其它的行均是值限定符。值限定符必须使用以下三种格式之一:
特性说明:值
特性说明::Base64 编码的值
特性说明:<URL
特性说明::Base64 编码的值
特性说明:<URL
LDIF 更改记录
LDIF 更改记录包含对目录所进行的修改。LDIF 更改记录可以包含所有 LDAP 更新操作(
添加、删除、修改和修改 DN 操作)。
LDIF 更改记录所使用的判别名限定符、特性值限定符和记录分界符的格式与 LDIF 内容记录相同。(有关详细信息,请参见LDIF 内容记录 。)根据是否出现 changetype 字段可以区分 LDIF 更改记录和 LDIF 内容记录。Changetype 字段标识更改记录所指定的操作。
changetype 字段可以使用以下五种格式之一:
表 136. Changetype 字段表格
Changetype 说明
changetype:add
该关键字表示更改记录指定进行 LDAP 添加操作。
changetype:delete
该关键字表示更改记录指定进行 LDAP 删除操作。
changetype:add
该关键字表示更改记录指定进行 LDAP 添加操作。
changetype:delete
该关键字表示更改记录指定进行 LDAP 删除操作。
changetype:moddn
该关键字表示更改记录指定进行 LDAP 修改 DN 操作(如果 LDIF 处理程序作为版本 3 客户程序联结到 LDAP 服务器)或进行修改 RDN 操作(如果 LDIF 处理程序作为版本 2 客户程序联结到 LDAP 服务器)。
changetype:modrdn
等同于 moddn 更改类型。
changetype:modify
该关键字表示更改记录指定进行 LDAP 修改操作。
更改类型:添加 (add)
“添加”更改记录类似于在所有特性值字段前加上 changetype: add 字段的内容更改记录(请参见LDIF 内容记录)。
所有记录必须属于同一类型。不能既有内容记录又有更改记录。
1 version: 1
2 dn: c=US
3 changetype: add
4 objectClass: top
5 objectClass: country
6
7 dn: l=San Francisco, c=US
8 changetype: add
9 objectClass: top
10 objectClass: locality
11 st: San Francisco
12
14 dn: ou=Artists, l=San Francisco, c=US
15 changetype:add
2 dn: c=US
3 changetype: add
4 objectClass: top
5 objectClass: country
6
7 dn: l=San Francisco, c=US
8 changetype: add
9 objectClass: top
10 objectClass: locality
11 st: San Francisco
12
14 dn: ou=Artists, l=San Francisco, c=US
15 changetype:add
16 objectClass: top
17 objectClass: organizationalUnit
18 telephoneNumber: +1 415 555 0000
19
20 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
21 changetype: add
22 sn: Michaels
23 givenname: Peter
24 objectClass: top
25 objectClass: person
26 objectClass: organizationalPerson
27 objectClass: iNetOrgPerson
28 telephonenumber: +1 415 555 0001
29 mail: Peter.Michaels@aaa
30 userpassword: Peter123
31
17 objectClass: organizationalUnit
18 telephoneNumber: +1 415 555 0000
19
20 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
21 changetype: add
22 sn: Michaels
23 givenname: Peter
24 objectClass: top
25 objectClass: person
26 objectClass: organizationalPerson
27 objectClass: iNetOrgPerson
28 telephonenumber: +1 415 555 0001
29 mail: Peter.Michaels@aaa
30 userpassword: Peter123
31
更改类型:删除 (Delete)
因为“删除”更改记录指定删除某项,所以“删除”更改记录只需要判别名限定符字段和“删除”更改类型字段。
因为“删除”更改记录指定删除某项,所以“删除”更改记录只需要判别名限定符字段和“删除”更改类型字段。
以下 LDIF 文件示例用于删除更改类型:添加 (add)中所示的 LDIF 文件所创建的四个项。
重要: 要删除以前添加的项,应将各项反向排序。否则,由于树枝项不为空,将导致删除操作失败。
1 version: 1
2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 changetype: delete
4
5 dn: ou=Artists, l=San Francisco, c=US
8 changetype:delete
9
10 dn: l=San Francisco, c=US
11 changetype: delete
12
13 dn: c=US
14 changetype: delete
15
11 changetype: delete
12
13 dn: c=US
14 changetype: delete
15
更改类型:修改 (Modify)
“修改”更改类型使您可以指定为已存在的项添加、删除和替换特性值。修改应使用以下三种格式之一:
“修改”更改类型使您可以指定为已存在的项添加、删除和替换特性值。修改应使用以下三种格式之一:
表 137. 修改限定符要素
修改限定符要素 说明
add:特性类型
该关键字表示特性类型的后续特性值限定符应添加到该项。
add:特性类型
该关键字表示特性类型的后续特性值限定符应添加到该项。
delete:特性类型
该关键字表示该特性类型的值将被删除。如果“删除”字段后跟有特性值限定符,将删除给定的值。
如果“删除”字段后没有任何特性值限定符,则删除所有值。如果该特性没有值,此操作将失败,但是因为该特性没有要删除的值,所以仍可获得所需效果。
replace:特性类型
该关键字表示该特性类型的值将被替换。“替换”字段后的任何特性值限定符将成为该特性类型的新值。
replace:特性类型
该关键字表示该特性类型的值将被替换。“替换”字段后的任何特性值限定符将成为该特性类型的新值。
如果“替换”字段后没有任何特性值限定符,当前的一组值将用一组空值替换(这会导致该特性被去除)。与“删除”修改限定符不同,如果特性没有值,替换仍可以成功完成。两种情况的实际效果是相同的。
以下是“修改”更改类型的示例,将向 cn=Peter Michaels 项添加一个附加的电话号码。
1 version: 1
2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 changetype: modify
4 # add the telephone number to cn=Peter Michaels
4 add: telephonenumber
5 telephonenumber: +1 415 555 0002
6
2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
3 changetype: modify
4 # add the telephone number to cn=Peter Michaels
4 add: telephonenumber
5 telephonenumber: +1 415 555 0002
6
如同可以在一个 LDAP 修改请求中组合多个修改操作一样,也可以在一个 LDIF 记录中指定多个修改操作。只包含连字符 (-) 的行用于标记每个修改限定符的特性值说明的结束。
以下 LDIF 示例文件包含多个修改操作:
1 version: 1
2
3 # An empty line to demonstrate that one or more
4 # line separators between the version identifier
2
3 # An empty line to demonstrate that one or more
4 # line separators between the version identifier
5 # and the first record is legal.
6
7 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
8 changetype: modify
9 # Add an additional telephone number value.
10 add: telephonenumber
11 telephonenumber: +1 415 555 0002
12 -
13 # Delete the entire fascimiletelephonenumber attribute.
14 delete: facsimileTelephoneNumber
15 -
16 # Replace the existing description (if any exists)
17 # with two new values.
18 replace: description
19 description: guitar player
6
7 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
8 changetype: modify
9 # Add an additional telephone number value.
10 add: telephonenumber
11 telephonenumber: +1 415 555 0002
12 -
13 # Delete the entire fascimiletelephonenumber attribute.
14 delete: facsimileTelephoneNumber
15 -
16 # Replace the existing description (if any exists)
17 # with two new values.
18 replace: description
19 description: guitar player
20 description: solo performer
21 -
22 # Delete a specific value from the telephonenumber
23 # attribute.
24 delete: telephonenumber
25 telephonenumber: +1 415 555 0001
26 -
27 # Replace the existing title attribute with an empty
28 # set of values, thereby causing the title attribute to
29 # be removed.
30 replace: title
31 -
32
21 -
22 # Delete a specific value from the telephonenumber
23 # attribute.
24 delete: telephonenumber
25 telephonenumber: +1 415 555 0001
26 -
27 # Replace the existing title attribute with an empty
28 # set of values, thereby causing the title attribute to
29 # be removed.
30 replace: title
31 -
32
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论