您的位置:首页 > 其它

LDAP使用小结一,命令行下成批添加子目录

2008-09-28 00:58 387 查看
//原创,大量参考了SUN文档,在此对作者表示感谢

使用ldap服务器已经有很长一段时间了,现在终于下定决心将以往的经验教训加以总结,免得以后忘记了,今天先做出第一篇,记录的添加.互联网上这方面的资料暂时还不多,不过也给我了很大的帮助,在此先谢谢他们.
下面言归正传:
任务需求:在现有树下面添加n条记录,因为n为较大整数,难以手工操作,现通过程序实现.
步骤:
1.导出该树下的一条记录,如果该树下目前没有任何记录,可以新添加一条记录,然后再导出,目的是得到记录在该树下的格式.命令为:
  ./ldapsearch -i gb2312 -D -w - -b "ou=teacher,o=myManager,dc=mytest,dc=tzc,dc=edu,dc=cn" -T "(objectClass=*)" > temp.txt
=====================
命令详解:
  ldapsearch 是ldap服务器提供的命令行工具,用于查询
  参数 -i:指定命令行的字符集,带这个参数就可以使用中文进行查询了.
  参数 -D:绑定的管理员.
参数 -w: 管理员密码,可以直接跟在后面,也可以用-代表,在命令后输入.
参数 -b: 查询的条件,一般以最近根节点为查询条件. 
参数 -T: 以长格式输出
参数 -B: 以utf-8编码格式输出
参数 -h: ldap服务器的IP地址
参数 -p: ldap服务器的TCP端口号
"(objectClass=*)" :输出显示字段,后面还可以再带几个字段,如uid,userpassword等.
======================
输出结果:
version: 1
dn: ou=teacher,o=myManager,dc=mytest,dc=tzc,dc=edu,dc=cn
ou: teacher
objectClass: organizationalUnit
objectClass: iplanet-am-managed-people-container
objectClass: top
dn: uid=2005031,ou=teacher,o=myManager,dc=mytest,dc=tzc,dc=edu,dc=cn
sn:: 55Sw
cn:: 55Sw5Lqs5rOi
iplanet-am-modifiable-by: cn=Top-level Admin Role,dc=mytest,dc=tzc,dc=edu,dc=cn
inetUserStatus: Active
uid: 2005031
objectClass: iplanetpreferences
objectClass: iplanet-am-managed-person
objectClass: top
objectClass: iplanet-am-user-service
objectClass: organizationalperson
objectClass: inetadmin
objectClass: inetorgperson
objectClass: person
objectClass: iplanet-am-auth-configuration-service
objectClass: inetuser
userPassword: {SSHA}/zstswFjVD552X9h2aVeIl5dM3j7fvpw9VI3NQ==
iplanet-am-user-auth-config: [Empty]
*********************************************************************************************
2.修改输出的文件,修改后的文件如下:
dn: uid=yourNO,ou=teacher,o=myManager,dc=mytest,dc=tzc,dc=edu,dc=cn
sn: 姓
cn: 姓名
iplanet-am-modifiable-by: cn=Top-level Admin Role,dc=mytest,dc=tzc,dc=edu,dc=cn
inetUserStatus: Active
uid: yourNO
objectClass: iplanetpreferences
objectClass: iplanet-am-managed-person
objectClass: top
objectClass: iplanet-am-user-service
objectClass: organizationalperson
objectClass: inetadmin
objectClass: inetorgperson
objectClass: person
objectClass: iplanet-am-auth-configuration-service
objectClass: inetuser
userPassword: yourPassword
iplanet-am-user-auth-config: [Empty]
===============

注意事项:
1) uid应该修改成要添加的记录uid,有两处要修改
2) sn 后面只有一个冒号,导出的时候有两个,应该去掉一个,此处可以使用中文
3) cn 后面只有一个冒号,导出的时候有两个,应该去掉一个,此处可以使用中文
4) userPassword 后面可以跟密码的明文,ldap服务器会自动进行加密.
5) 可以将多个记录合并在一个文件里,用空行隔开即可一次性将多条记录导入.
6) 可使用程序将要加的记录从文本中读取,再生成执行脚本.
*********************************************************************************************
3.修改后的文件要转换成utf-8编码格式,因为ldap服务器是采用utf-8编码的,否则可能会有乱码的问题.
iconv -f gb2312 -t utf-8 temp.txt > tempUTF8.txt
*******************************************************************************************

4.导入系统.
./ldapmodify -D "cn=directory manager" -w - -a -c -f tempUTF8.txt
=====================
命令详解:
  ldapmodify 是ldap服务器提供的命令行工具,用于修改,包括添加
  参数 -i:指定命令行的字符集,带这个参数就可以使用中文进行操作了,但只限于命令行.
  参数 -D:绑定的管理员.
参数 -w: 管理员密码,可以直接跟在后面,也可以用-代表,在命令后输入.
参数 -a: 添加目录 
参数 -c: 遇到错误时继续运行.
参数 -f: 导入的记录信息文件.
======================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: