设为首页 收藏本站
查看: 1105|回复: 0

[经验分享] perl 使用LDAP模块

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-27 07:05:15 | 显示全部楼层 |阅读模式
  一.需求分析
最近有个需求,就是编写脚本来显示LDAP服务器里面某些用户里面的某些字段,如
uid, uidNumber, 等等,网上查了下资料,发现可以使用perl里面的perl-ldap包来实现。
二. 测试环境

test@camlit ~: uname -m
x86_64
test@camlit ~: cat /etc/issue
CentOS release 5.4 (Final)
test@camlit ~: perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi
test@camlit ~: rpm -qa |grep perl-LDAP
perl-LDAP-0.33-3.fc6
  
三.基本用法
和其他的Perl 库一样,perl-ldap也是调用use 声明,
如下所示:



  • use Net::LDAP ;
复制代码  打开一个新的LDAP连接,可以使用new()函数来实现,例如打开一个主机名为:
test.com.cn的机器,可以如下所示:



  • $ldap = Net::LDAP->new(“test.com.cn”);
复制代码  备注:
在这里,并没有指定特定的端口号,perl-ldap假设了默认的端口号:389,这个是默认
的LDAP服务的端口号,如果你使用的是不同的端口,如1389 ,那么就需要port参数,
如下所示:



  • $ldap = Net::LDAP->new(“test.com.cn”, port=>1389);
复制代码  如果那个机器无法连接,上面的函数调用将在120秒返回错误信息,也可以使用
timeout 参数来指定超时时间,如下所示:



  • $ldap = Net::LDAP->new(“test.com.cn”, timeout=>30);
复制代码  当连接建立好后,可以使用”perldoc Net::LDAP”命令来查询更加详细的说明。所有的
perl-ldap 函数都可以使用手册里面的方法来访问。
常见的perl-ldap方法有:

$ldap->add(); #Add an entry to the server
$ldap->bind(); #Bind to a directory server
$ldap->delete(); #Delete an entry from the server
$ldap->moddn(); #Modify an entry's Distinguished Name
$ldap->modify(); #Modify the contents of an entry
$ldap->search(); #Perform a search on a directory
$ldap->unbind(); #Unbind from a server
  

四.几个例子
1. add()用法:
如果有很多用户在你的系统里面,也许你不希望通过GUI之类的工具手动一个一个的
添加,所以可以编写脚本来实现快速增加用户,或者编写基于Web界面的系统可以让
每个人在上面填写自己的相关信息,而这个信息会自动的添加到LDAP服务里面。
这里我们使用add()方法来增加用户:



  • $result = $ldap->add("uid=john,ou=People,dc=test,dc=com,dc=cn",
  • attr => [ 'cn' => 'John Smith',
  • 'sn' => 'Smith',
  • 'uid'=> 'john',
  • 'mail' => 'john@test.com.cn',
  • 'objectclass' => [ 'top','person','organizationalPerson', 'inetOrgPerson']
  • ]
复制代码  上面的代码的作用是向LDAP里面增加了一个”John”帐号。正如你看到的那样,LDAP
里面的“Attributes”属性都被attr参数所提供了。
2.delete()用法:
使用该方法来从LDAP里面删除用户 ,如下:



  • $dn=”uid=test1,ou=People,dc=test,dc=com,dc=cn”;
  • $ldap->delete($dn);
复制代码  3.search()用法:
此方法是用来查询用户相关信息,如下:



  • $mesg = $ldap->search( filter =>"(uid=test)",
  • base => "ou=People,dc=test,dc=com,dc=cn",
  • attrs => ['uid','uidNumber'] );
复制代码  备注:
search()方法返回的是Net::LDAP:Search对象,所以最简单的方式能得到该对象的结果
内容就是使用entries()方法,该方法会返回Net::LDAP:Entry对象数组。
如:



  • @entries = $mesg-> entries;
复制代码  一些其他有用的方法:


$mesg->count; The number of entries returned in the search
$mesg->entry(n); Return the n'th entry (initial entry is 0)
  
一个简单查询的例子:
test@camlit ~: cat query_ldap.pl



  • #!/usr/bin/perl
  • use Net::LDAP;
  • $ldap = Net::LDAP->new ("192.168.56.101") or die "$@";
  • $ldap->bind;
  • $mesg = $ldap->search(base => "dc=test,dc=com,dc=cn",
  • filter => "(objectClass=organizationalPerson)");
  • @entries = $mesg->entries;
  • foreach $entry (@entries){
  • $entry->dump; # 作用是:把结果显示到标准输出,即终端。
  • }
复制代码  4.modify()用法:
该方法是用来修改用户相关信息,如下:



  • $dn = "uid=harry,ou=People,dc=test,dc=com,dc=cn";
  • $mesg = $ldap->modify($dn, replace => { "mail" => "harry\@mail.test.com"});
复制代码  总结:
在perl脚本中使用perl-ldap来处理关于LDAP一些操作是比较方便的,另外它为管理
和维护拥有大量用户的服务提供简单的方法。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156763-1-1.html 上篇帖子: 【Perl】Path::File 目录的创建和删除 下篇帖子: perl入门
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表