最近两周由于要学习测试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. tornado session

    [转]tornado入门 - session cookie 和session 的区别: 1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以 ...

  2. 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...

  3. VS2010中项目发布遇到的应用程序池问题(无法识别的属性“targetFramework”)

    1.错误情况 2.原因:VS2010中你的应用程序的目标框架与IIS中的应用程序池不同.VS2010中的是.Net Framework4.0,而本机IIS是.Net Framework2.0 3.解决 ...

  4. jquery实现Tab选项卡菜单

    效果图: 默认选中  科技                                                                                 当鼠标悬停在 ...

  5. MVC5 网站开发之二 创建项目

    昨天对项目的思路大致理了一下,今天先把解决方案建立起来.整个解决包含Ninesky.Web.Ninesky.Core,Ninesky.DataLibrary等3个项目.Ninesky.Web是web应 ...

  6. 从零开始编写自己的C#框架(17)——Web层后端首页

    后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...

  7. Android5.0以下出现NoClassDefFoundError

    事发起因 大周末的,突然接到老大的电话说很多用户无法安装新上线的APK,让我紧急Fix(现Android项目就我一己之力).但奇怪的是也没有Bug Reporter,而且开发过程中也一直没问题.根据上 ...

  8. 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)

    说到PopupWindow,我个人感觉是又爱又恨,没有深入使用之前总觉得这个东西应该很简单,很好用,但是真正使用PopupWindow实现一些效果的时候总会遇到一些问题,但是即便是人家的api有问题, ...

  9. 编写高质量代码:改善Java程序的151个建议(第4章:字符串___建议56~59)

    建议56:自由选择字符串拼接方法 对一个字符串拼接有三种方法:加号.concat方法及StringBuilder(或StringBuffer ,由于StringBuffer的方法与StringBuil ...

  10. Jquery中的bind(),live(),delegate(),on()绑定事件方式

    博客转载为作者:枫上善若水http://www.cnblogs.com/xilipu31/p/4105794.html 前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到d ...