使用ldapadd,ldapmodify,slapcat 进行数据增加,备份,导入导出数据ldapsearch获取中文组织结构为加密过的字符串

统计用户和组 

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进行备份和恢复也是常用的方式。

ldapmodify:

[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

将test移动到ou=组中去

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值