zoukankan      html  css  js  c++  java
  • 使用Ruby来实现批量更新AD中字段

    准备工作

    安装需要用到的gem

    gem install net-ldap
    gem install roo

    准备好要更新的数据,比如exel表: /root/account.xlsx,内容如下

    姓名 性别
    张三
    李四

    实现代码

    require 'roo'
    require 'net/ldap'

    xlsx = Roo::Excelx.new("../account.xlsx")

    ary = Array.new

    #这里如果excel中的标签不是Sheet1,需要修改
    xlsx.sheet_for("Sheet1").each_row do |row|
      ary << row.map(&:cell_value).reverse
    end
    
    users = ary.to_h
    
    if ARGV.count == 2
      ldap = Net::LDAP.new :host => "172.16.1.6",
        :port => 389,
        :auth => {
            :method => :simple,
            :username => ARGV.first,
            :password => ARGV.last
        }
    
      count, rules = 0, []
      treebase = "OU=User,OU=ABC,DC=example,DC=com"

     
    ldap.search(:base => treebase, :scope => Net::LDAP::SearchScope_SingleLevel) do |entry| displayname = entry.displayname.shift unless displayname.nil? puts "########################################" if users.has_key?(displayname) ldap.modify :dn => entry.dn, :operations => [[ :replace, :pager, users.fetch(displayname) ]] rules.delete(displayname) ; count += 1 puts "名字:#{displayname},性别:#{users.fetch(displayname)}: 已更新" else puts "跳过【#{displayname}】" end end end
    puts
    "更新总人数:#{count}"
    #输出AD中未找到的用户 rules.each do |key, value| puts "#{key}, #{value}" end end

    至此,Excel表中的数据就更新到AD对应的属性了。

  • 相关阅读:
    自制对焦测试卡
    RHEL AS4上配置snmpd遇到问题及解决办法笔记
    一个OID资料集中网站
    mrtg配置小问题
    sybase 优化总结[zt]
    [ZT] solarwinds 2002工程师版本(带注册机)
    推荐四个网盘资源搜索工具
    Hadoop 集群搭建
    分布式文件系统 HDFS 简介
    HDFS Shell 命令实操
  • 原文地址:https://www.cnblogs.com/zhangyanpei/p/5646960.html
Copyright © 2011-2022 走看看