使用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对应的属性了。
使用Ruby来实现批量更新AD中字段的更多相关文章
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...
- Myabtis中批量更新update多字段
在mybatis中批量更新多个字段 推荐使用如下操作: 方式1:在Dao层接口中: void updateBatch(@Param("list")List<Student&g ...
- PHP如何批量更新MYSQL中的数据
最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...
- PHP批量更新MYSQL中的数据
原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...
- 使用DataAdpater自动批量更新DataSet中的数据到数据库
使用DataAdpater的批量更新,好处是不用写具体的sql脚本,尤其是做web服务这个优势非常吸引人. [WebMethod(Description = "Update服务提供的方法,将 ...
- mysql批量更新update中的锁表机制
mysql的行锁是通过索引加载的,即行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁. CREATE TABLE SIMPLE_USER( I ...
- sql 批量更新表中多字段为不同的值
,),,),rand()) select newid() ,) update tablename , FB,)) , ), FC,)) , )
- SQL 根据关联表更新主表中字段数据
今天遇到一个客户的数据更新问题,两个相关联的表,一个主表用于保存单据主要信息,一个副表用于保存单据的明细信息:现在要把主表的其中一个字段的数据更新到副表的一个字段中保存.精通的SQL语法的,当然是很简 ...
- 用Update Select批量更新某一字段的值[可以跨库]
SQL:UPDATE test1 SET name = (SELECT y.name FROM DB2.dbo.test2 y WHERE test1.id = y.id)
随机推荐
- [LeetCode] Palindrome Number 验证回文数字
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...
- 20145215&20145307《信息安全系统设计基础》实验二 固件设计
20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...
- csv表格处理(上)-- JS 与 PHP 协作导入导出
CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为“逗号分隔符文件”.在Excel中打开如下图左边所示,在记事本打开如下图右边 ...
- KD-tree(2维)
用于动态插入以及求某点的最近点的距离(BZOJ2648,BZOJ2716) #include <cstdio> #include <cmath> #include <al ...
- tomcat启动报错: org.apache.catalina.deploy.WebXml addFilter
解决方法为:在Tomacat7的context.xml文件里的<Context>中加上<Loader delegate="true" />
- Spring缓存机制的理解
在spring缓存机制中,包括了两个方面的缓存操作:1.缓存某个方法返回的结果:2.在某个方法执行前或后清空缓存. 下面写两个类来模拟Spring的缓存机制: package com.sin90lzc ...
- 关于Django 错误 doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS
记录一下 报错 doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS\ 这个问题出现没 ...
- POJ 1149 PIGS
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20579 Accepted: 9387 Description ...
- 推荐一款Mac上好用的Markdown编辑器
[TOC] 推荐一款Mac上好用的Markdown编辑器 正文 我算是一位Evernote的重度用户吧.之前也尝试过为知笔记,有道云笔记,微软的onenote,最后还是觉的Evernote.因为我喜欢 ...
- AngularJS 细节
AngularJS 表达式({{ expression }})类似于 AngularJS ng-bind 例子: <span>表达式</span> <div ng-app ...