最近两周由于要学习测试LDAP,所以对于用脚本操作LDAP很感兴趣,所以就做了一些脚本,都是比较简单的脚本吧。

废话不多说了哈。直接上教程

首先声明:我使用的是JLDAP操作LDAP,所以需要从官网下载一个JAR包,这里你们自己百度一下就能找到了。

第一步,一切的开端!!!!链接LDAP

import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPModification; private static String ldapHost = "xxxx";
private static int ldapPort = 389;
private static String ldapBindDN = "xxx";;
private static String ldapPassword = "password";
private static int ldapVersion = LDAPConnection.LDAP_V3; @SuppressWarnings("deprecation")
public static void connection() throws LDAPException
{
String modifyDn="cn=Staff,ou=People,dc=lisys,dc=cn";
LDAPConnection lc = new LDAPConnection();
lc.connect(ldapHost, ldapPort);
lc.bind(ldapVersion, ldapBindDN, ldapPassword);
}

 对于LDAP的密码有时候需要转换一下格式。那么就用这个代码试一下password.getBytes("UTF8")

第二:对于LDAP的添加操作

                LDAPAttributeSet attributeSet = new LDAPAttributeSet();

		attributeSet.add(new LDAPAttribute("objectclass", new String(
"inetOrgPerson")));
attributeSet.add(new LDAPAttribute("cn", "wuwo"));
attributeSet.add(new LDAPAttribute("sn", "Sun"));
attributeSet.add(new LDAPAttribute("mail", "837955487@qq.com"));
attributeSet.add(new LDAPAttribute("Blog",
""));
attributeSet.add(new LDAPAttribute("userPassword", "111111"));
attributeSet.add(new LDAPAttribute("uid", "addnew"));
String dn = "uid=wuwo,ou=Developer,"+containerName;
/**就是一个DN路径,以上为添加属性。自己可以进行删减之类的。objectclass注意一下,查看LDAP手册之类的看都能规定什么值*/ LDAPEntry newEntry = new LDAPEntry(dn, attributeSet);
lc.connect(ldapHost, ldapPort);
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
System.out.println("login ldap server successfully.");
lc.add(newEntry);
System.out.println("Added object: " + dn + " successfully.");

  第三:修改属性,包括添加属性,修改属性,删除属性。

LDAPConnection lc = new LDAPConnection();

	List<LDAPModification> modList = new ArrayList<LDAPModification>();

		// Add a new value to the description attribute
String desc = "This object was modified at " + new Date();
LDAPAttribute attribute = new LDAPAttribute("description", desc);
modList.add(new LDAPModification(LDAPModification.ADD, attribute)); attribute = new LDAPAttribute("telephoneNumber", "180-8888-xxxx");
modList.add(new LDAPModification(LDAPModification.ADD, attribute)); // Replace the Blog address with a new value
attribute = new LDAPAttribute("Blog", "http://www.cnblogs.com/demonwuwo/");
modList.add(new LDAPModification(LDAPModification.REPLACE, attribute)); // delete the email attribute
attribute = new LDAPAttribute("mail");
modList.add(new LDAPModification(LDAPModification.DELETE, attribute)); LDAPModification[] mods = new LDAPModification[modList.size()];
mods = (LDAPModification[]) modList.toArray(mods); lc.connect(ldapHost, ldapPort);
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
lc.modify(modifyDN, mods);
System.out.println("LDAPAttribute add、replace、delete all successful.");

 第四:删除某一个树

            LDAPConnection lc = new LDAPConnection();

            lc.connect(ldapHost, ldapPort);
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
lc.delete(“需要删除的树的DN”);
System.out.println(" delete Entry: " + deleteDN + " success.");
lc.disconnect();

  反正基本上的操作也就这样。希望能够跟大家交流~~

PS:在删除里如果一个树下有很多相同名字的属性,那么你也可以删除其中的一个,只要删除的时候,

attribute = new LDAPAttribute("mail",content);

JAVA操作LDAP的详解(JLDAP)的更多相关文章

  1. 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)

    1.简介 有些测试场景或者事件,Selenium根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作.比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某 ...

  2. 《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)

    1.简介 本文主要介绍两个在测试过程中可能会用到的功能:Actions类中的拖拽操作和Actions类中的划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能. 2.拖拽操 ...

  3. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)

    1.简介 在实际自动化测试过程中,我们同样也避免不了会遇到单选和多选的测试,特别是调查问卷或者是答题系统中会经常碰到.因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助 ...

  4. 《手把手教你》系列技巧篇(三十四)-java+ selenium自动化测试-单选和多选按钮操作-中篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历单选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选按钮进行实战. 2.d ...

  5. 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ...

  6. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  7. 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  8. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

  9. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

随机推荐

  1. require() 源码解读

    2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式. 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS ...

  2. springmvc+jpa实现分页的两种方式

    1.工具类 public final class QueryTool { public static PageRequest buildPageRequest(int pageNumber, int ...

  3. 计算机程序的思维逻辑 (40) - 剖析HashMap

    前面两节介绍了ArrayList和LinkedList,它们的一个共同特点是,查找元素的效率都比较低,都需要逐个进行比较,本节介绍HashMap,它的查找效率则要高的多,HashMap是什么?怎么用? ...

  4. 如何只用CSS做到完全居中

    我们都知道 margin:0 auto; 的样式能让元素水平居中,而 margin: auto; 却不能做到垂直居中--直到现在.但是,请注意!想让元素绝对居中,只需要声明元素高度,并且附加以下样式, ...

  5. php内核分析(一)-sapi_module_struct

    这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux 首先是寻找php的入口,php有很多种模式,apache,php-fpm, cli模式,我要入手的话,只能先从最简单的cl ...

  6. 『.NET Core CLI工具文档』(六)dotnet 命令

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet command 翻译:dotnet 命令 名称 dotnet -- 运行命令行命令的一般驱动程序 概要 d ...

  7. [unity]UGUI界面滑动,ScrollRect嵌套滑动

    原因:老板蛋痛,让我去抄皇室战争. 思路:我大概知道ngui(后来改成UGUI的)里面有个ScrollView.于是我就想一个横着的SV加上5个竖的SV不就好了吗. 过程: 于是 但是有个问题就是UI ...

  8. Github pages + jekyll 博客快速搭建

    Github pages + jekyll 博客快速搭建 寻找喜欢的模版 https://github.com/jekyll/jekyll/wiki/sites http://jekyllthemes ...

  9. Yii2.X 多语言-类图

  10. GJM :Unity使用EasyAR实现脱卡功能

    首先说下大致思路当卡片离开摄像头时间,ImageTarget-Image的SetActive (false),所以其子物体(model)也就不显示了,因此解决的办法就是在Target (false)时 ...