• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

使用Ruby来实现批量更新AD中字段

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

准备工作

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby中Require、Load、Include和Extend的区别发布时间:2022-07-14
下一篇:
RubyonRails,通过实例变量从Controller向View传递数据发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap