准备工作

安装需要用到的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对应的属性了。

posted on 2016-07-06 15:11  oslivan  阅读(463)  评论(0编辑  收藏  举报