统计用户和组
- user:
- ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,dc=hoperun,dc=com" cn | grep -v '#' | grep -v '^$' | grep -v dn | grep cn
-
- groups
- ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=groups,dc=rd,dc=hoperun,dc=com" cn | grep -v '#' | grep -v '^$' | grep -v dn | grep cn
乱码问题ldapsearch获取中文组织结构为加密过的字符串:
- [root@localhost ldap]# echo "Y2496ZSA5ZSu566h55CG6YOoLG91PWdyb3VwcyxkYz1yZCxkYz1ob3BlcnVuLGRjPWNvbQ==" | perl -MMIME::Base64 -ne 'print decode_base64($_)'
- cn=销售管理部,ou=groups,dc=rd,dc=hoperun,dc=com[root@localhost ldap]#
- #!/bin/bash
-
- basePath=$(cd `dirname $0`; pwd)
-
- tmpDir="${basePath}/tmp"
- dataFile=${tmpDir}/ldap.out
-
- if [ ! -d "${tmpDir}" ]; then
- mkdir ${tmpDir}
- fi
-
- ldapsearch -LLL -x -h 172.16.10.1** -b "ou=groups,dc=rd,dc=hoperun,dc=com" "(objectClass=posixAccount)" dn | grep -v "^$"> $dataFile
- while read line
- do
- str=`echo $line | awk -F '::' '{print $1}'`
- if [ "$str" == "dn" ]; then
- result=`echo $line | awk '{print $2}' | perl -MMIME::Base64 -ne 'print decode_base64($_)'| iconv -f utf8 | sed 's/,/ /g' | awk '{$NF=$(NF-1)="";print}'`
- else
- result=`echo $line | awk '{print $2}' | sed 's/,/ /g' | awk '{$NF=$(NF-1)="";print}'`
- fi
- echo $result
- done < $dataFile
objectClass: groupOfNames:添加组
- [root@localhost group]# cat addgroup_groupOfNames.ldif
- dn: cn=jettoapi_group1,ou=groups,dc=rd,dc=hoperun,dc=com
- objectClass: groupOfNames
- cn: jettomanager_group1
- member: cn=root,ou=Users,dc=rd,dc=hoperun,dc=com
- member: cn=admin,ou=Users,dc=rd,dc=hoperun,dc=com
- member: cn=jettoapi_user2,ou=Users,dc=rd,dc=hoperun,dc=com
objectClass:posixGroup:方式添加组
- [root@localhost group]# cat addgroup_posixGroup.ldif
- dn: cn=test_group,ou=groups,dc=rd,dc=hoperun,dc=com
- objectClass:posixGroup
- objectClass:top
- gidNumber:1001
- cn: test_group
组中添加用户
- [root@localhost group]# cat u2g.ldif
- dn: cn=test_group,ou=groups,dc=rd,dc=hoperun,dc=com
- changetype: modify
- add: member
- member: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- adduser.ldif addusermodify.ldif readme
- [root@localhost ldap]# cat adduser.ldif
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- cn: test
- displayName: test
- mail: test@hoperun.com
- sn: test
- uid: test
- objectClass: inetOrgPerson
- objectClass: top
- userPassword: 123456aA
- [root@localhost ldap]# cat addusermodify.ldif
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- changetype: add
- cn: test
- displayName: test
- mail: test@hoperun.com
- sn: test
- uid: test
- objectClass: inetOrgPerson
- objectClass: top
- userPassword: 123456aA
- [root@localhost ldap]# cat readme
- add:
- ldapadd -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -f adduser.ldif
- 或
- ldapmodify -a -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w 123456aA -f adduser.ldif
- 或 注意修改addusermodify文件
- ldapmodify -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w 123456aA -f addusermodify.ldif
-
-
- [root@localhost ldap]# ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,dc=hoperun,dc=com" cn=test
-
- delete:
- ldapdelete -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
在添加用户的时候关键的objectclass是inetOrgPerson,而对于添加部门,关键信息则为organisationalUnit,添加两个OrganisationUnit的LDIF信息如下:
- cat orgunits.ldif
- 加入组织People
- dn: ou=People,dc=rd,dc=hoperun,dc=com
- changetype: add
- objectclass: top
- objectclass: organizationalUnit
- ou: People
-
- 加入组织Servers
- dn: ou=Servers,dc=rd,dc=hoperun,dc=com
- changetype: add
- objectclass: top
- objectclass: organizationalUnit
- ou: Servers
-
-
- 组织Servers内加入人员test1
- dn: cn=test1,ou=Servers,dc=rd,dc=hoperun,dc=com
- changetype: add
- objectclass: person
- objectclass: organizationalPerson
- objectclass: inetOrgPerson
- cn: test1
- sn: test1
- ou: Servers
- description: beautiful
- uid: test1
-
通过这个例子可以对LDIF进一步理解到可以是多段信息的结合,而在实际的项目中,对LDAP数据在不是很复杂的情况下,使用LIDF进行备份和恢复也是常用的方式。
- [root@localhost ldap]# cat adduser.ldif
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- cn: test
- displayName: test
- mail: test@hoperun.com
- sn: test
- uid: test
- title: jettech
- objectClass: inetOrgPerson
- objectClass: top
- userPassword: 123456aA
-
-
- [root@localhost ldap]# ldapmodify -a -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w 123456aA -f adduser.ldif
- adding new entry "cn=test,ou=Users,dc=rd,dc=hoperun,dc=com"
-
- [root@localhost ldap]# ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,dc=hoperun,dc=com" cn=test
- # extended LDIF
- #
- # LDAPv3
- # base <ou=Users,dc=rd,dc=hoperun,dc=com> with scope subtree
- # filter: cn=test
- # requesting: ALL
- #
-
- # test, Users, rd.hoperun.com
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- cn: test
- displayName: test
- mail: test@hoperun.com
- sn: test
- uid: test
- title: jettech
- objectClass: inetOrgPerson
- objectClass: top
- userPassword:: MTIzNDU2YUE=
-
- # search result
- search: 2
- result: 0 Success
-
- # numResponses: 2
- # numEntries: 1
修改title:注意修改说明都可以.我这里只是修改了title
cn: test
displayName: test
mail: test@hoperun.com
uid: test
objectClass: inetOrgPerson
objectClass: top
userPassword:: MTIzNDU2YUE=
title: test
sn: test
- [root@localhost ldap]# cat modifyuser.ldif
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- changetype: modify
- replace: title
- title: wubo
-
-
-
- [root@localhost ldap]# ldapmodify -a -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w 123456aA -f modifyuser.ldif
- modifying entry "cn=test,ou=Users,dc=rd,dc=hoperun,dc=com"
-
- [root@localhost ldap]# ldapsearch -x -D cn=admin,dc=rd,dc=hoperun,dc=com -w 123456aA -b "ou=Users,dc=rd,dc=hoperun,dc=com" cn=test
- # extended LDIF
- #
- # LDAPv3
- # base <ou=Users,dc=rd,dc=hoperun,dc=com> with scope subtree
- # filter: cn=test
- # requesting: ALL
- #
-
- # test, Users, rd.hoperun.com
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- cn: test
- displayName: test
- mail: test@hoperun.com
- sn: test
- uid: test
- objectClass: inetOrgPerson
- objectClass: top
- userPassword:: MTIzNDU2YUE=
- title: wubo
-
- # search result
- search: 2
- result: 0 Success
-
- # numResponses: 2
- # numEntries: 1
添加字段:
- [root@localhost ldap]# cat addmodifyuser.ldif
- dn: cn=test,ou=Users,dc=rd,dc=hoperun,dc=com
- changetype: modify
- add: description
- description: beijing description
-
-
-
- [root@localhost ldap]# ldapmodify -a -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w 123456aA -f addusermodify.ldif
LDAP基础:7:使用ldapmodify和ldapdelete进行修改或删除_淼叔的博客-CSDN博客_ldapmodify
1.导出
- 一:导出数据
- [root@localhost ldap]# slapcat -v -l back.ldif
-
2. 过滤ldif文件中多余部分
- cat >slapcat.regex <<EOF
- /^creatorsName: /d
- /^createTimestamp: /d
- /^modifiersName: /d
- /^modifyTimestamp: /d
- /^structuralObjectClass: /d
- /^entryUUID: /d
- /^entryCSN: /d
- EOF
-
-
- [root@localhost ldap]# cat back.ldif | sed -f slapcat.regex > back1.ldif
3:导入数据
ldapadd -H ldap://127.0.0.1 -x -D "用户" -f back1.idlf -w 密码
4:查看结果
ldapsearch -H ldap://127.0.0.1 -x -b "cn=admin,dc=rd,dc=hoperun,dc=com"
5:总结
注意过滤掉的ldif文件当中,可能还存在有多余部分,可能会导致导入失败,如果导入失败,请仔细查看文件中是否有多余部分,另外,导入的ldap数据库所拥有的目录结构必须与文件中的目录结构能够吻合,否则会出现no such object的错误。
其他方案:
[方法1]
关闭:kill -9 `cat /var/run/slapd.pid`
启动:/usr/sbin/slapd
备份:/usr/sbin/slapcat>mail_ldap.ldif
导入:ldapadd -x -D "cn=admin,dc=rd,dc=hoperun,dc=com" -w xxxx -v -f mail_ldap.ldif
关闭模式导入:
slapadd -l mail_ldap.ldif -f /etc/openldap/sladp.conf
[方法2]
系统突然掉电或重启引起LDAP数据库意外关闭造成的。
进入ldap数据目录(/openldap/var/openldap-data),执行db_recover,再启动服务.
/var/lib/ldap slapd db_recover
[方法3]
ldapsearch -x -b 'cn=admin,dc=rd,dc=hoperun,dc=com' -w xxxx > ldapbackup.ldif