1、界面配置ldap验证(略)

2、mysql导入ldap帐号信息

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import pymysql
import commands
import base64
import sys
from datetime import datetime

reload(sys)
sys.setdefaultencoding('utf-8')

mysql_host='xxx.internal.xxx.com'
mysql_port=3306
mysql_user='zabbix'
mysql_passwd='zabbix'
mysql_db='zabbix'

def get_user_from_ldap ():
ldap_users=commands.getoutput("ldapsearch -x -LLL -H ldap://xxx.xxx.xxx.xxx-b dc=xx,dc=com givenName|sed '1,12'd|sed '/^$/d'|egrep -v 'ou=Group|ou=machines'").strip().splitlines()
return ldap_users

def get_value():
values = {}
lines = get_user_from_ldap()
for index,line in enumerate(lines):
if line.startswith("dn: cn="):
if (index+1)<len(lines) and lines[index+1].startswith("givenName:"):
strcount = lines[index+1].strip().split()[0].count(':')
if strcount == 2:
sourcename = lines[index+1].strip().split()[1]
name = base64.b64decode(sourcename)
else:
name = lines[index+1].strip().split()[1]
alias = lines[index].strip().split('=')[1].split(',')[0]
values[alias] = name
else:
print "The user [%s] set error on ldap server !" % line
return values

def get_id():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute("select userid from users order by userid desc limit 1")
id = cur.fetchone().values()[0]
cur.close()
conn.close()
return id

def get_mysql_data():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute("select userid from users order by userid desc limit 1")
id = cur.fetchone().values()[0]
cur.close()
cur_user = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur_user.execute("select alias from users")
user_data = cur_user.fetchall()
user_name = [name['alias'] for name in user_data]
cur_user.close()
conn.close()
return id,user_name

def insert_data():
conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, passwd=mysql_passwd, db=mysql_db, charset='utf8')
cur = conn.cursor()
n, zabbix_user = get_mysql_data()
# del_name = []
data = get_value()
ldap_name = data.keys()
for alias, name in data.items():
search = cur.execute("select * from users where alias = %s", (alias, ))
if not search:
n += 1
sql = "insert into users(userid,name,alias) values ('%s','%s','%s');" % (n,name,alias)
insert = cur.execute(sql)
if insert:
with open ('/opt/ldap.log', 'a') as log:
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str = "User %s Name's %s and Userid's %s Add Succeed at %s" % (alias,name,n,time)
log.write(str+'\n')
del_cur = conn.cursor()
for name in zabbix_user:
if name not in ldap_name:
if name.lower() != 'zabbix' or name.lower() != 'guest':
# del_name.append(name)
try:
del_data = del_cur.execute("delete from users where alias = %s", (name,))
if del_data:
with open ('/opt/ldap.log', 'a') as del_log:
del_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
del_str = "User %s del succeed at %s" % (name, del_time)
del_log.write(del_str+'\n')
except (Exception), error_str:
print error_str
print "when del %s failed" % name
# print del_name
conn.commit()
cur.close()
conn.close()

if __name__ == '__main__':
insert_data()

zabbix 同步ldap帐号脚本的更多相关文章

  1. VBS处理AD帐号密码到期提醒的脚本[zt]

    原文:https://gallery.technet.microsoft.com/scriptcenter/f7f5f7ed-14ee-4d0e-81c2-7d95ce7e08f5 '======== ...

  2. shell脚本,批量创建10个系统帐号并设置密码为随机8位字符串。

    [root@localhost wyb]# cat user10.sh #!/bin/bash #批量创建10个系统帐号wangyb01-wangyb10并设置密码(密码为随机8位字符串). > ...

  3. 如何修改SharePoint2013服务器场帐号密码

    服务器远程登录帐号密码修改密码后,如何修改sharepoint服务器场管理员账户密码,今天登录了一下N久以前的搭建sharepoint2013服务器场的一台服务器器,登录进去以后直接提示帐号密码过期需 ...

  4. wex5 实战 登陆帐号更换与用户id一致性

    一 前言 关于用户登陆,注册,页面跳转,我讲了很多,都是页面框架级别的.有人问到这个问题,索性总结一下,今天是收尾最后一篇. 以往初学时的设计是: 1 注册 2 登陆 3 进入页面. 这种很简单,没有 ...

  5. 在SQL Server中添加供应用程序使用的帐号

        在之前客户咨询案例中,很多客户应用程序连接SQL Server直接用的就是SA帐号.如果对数据库管理稍微严格一点的话,就不应该给应用程序这种权限,通常应用程序只需要进行增删改查,而很少有DDL ...

  6. 3种用组策略将域帐号加入本地管理员组的方法_jinifly_新浪博客

    次当前系统域帐号是怎么在第一次登录时,自动加入域客户端本地管理员组的?我猜不外乎就是脚本.计算机策略或虚拟机初始化的自动应答脚本,结果系统的前任同事找到了答案--GPO的用户策略(确切讲是用户首选项) ...

  7. 为github帐号添加SSH keys

    为github帐号添加SSH keys 2012-05-26 00:05 34279人阅读 评论(6) 收藏 举报 ssh文本编辑gitvim工具up 使用git clone命令从github上同步g ...

  8. 用firefox 31配合KeePass密码管理器实现web帐号密码自动填写登录

    原文:http://bbs.kafan.cn/thread-1754676-1-1.html KeePass的优势:1.这是一款完全开源的密码管理器2.很多人都使用lastpass来保存密码,而这种严 ...

  9. Chapter 2 User Authentication, Authorization, and Security(2):创建登录帐号

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38705965,专题目录:http://blog.csdn.net/dba_huangzj ...

随机推荐

  1. 13、vue如何解决跨域问题

    开发环境:配置config文件夹中index.js文件: proxyTable: { '/api': { target: 'http://10.10.1.242:8245',//后端地址 // sec ...

  2. 12306 抢票项目霸榜 GitHub,标星即将破万

    十一将至,你买到回家的火车票了吗?如果没有,你可以试着打开 GitHub,在搜索栏键入 12306 的关键词,我相信你会发现一个新大陆.没错,这里有 1572 个抢票项目.它们大多用 Python.J ...

  3. H3C STA>PC的数据转发

  4. 【Git】.DS_Store 是什么文件

    一.为啥会注意到该文件 合并代码的时候,.DS_Store文件发生了冲突,然后进入到项目目录去看,果然存在该文件,就比较好奇该文件是干什么的. 二..DS_Store 是什么文件 .DS_Store( ...

  5. gitlab上下载项目

    第一步:下载安装git,在官网下载安装即可,没有账号的自己注册账号: 第二步:在左面空白处点击鼠标右键,点击Git Bash Here,出现对话框: 第三步:配置本地仓库的账号邮箱git: $ git ...

  6. sourceinsight sublimetext主题色配置

    1.sourceinsight发布了4.0版本,全面支持了utf-8编码,这里sourinsight 颜色基本完全按照sublime默认的monokia主题来进行调色,效果如下图所示. 2.配色文件和 ...

  7. C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法

    每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...

  8. 图论篇2——最小生成树算法(kurskal算法&prim算法)

    基本概念 树(Tree) 如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree) 无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树. 生成 ...

  9. 项目Beta冲刺(团队)--2/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...

  10. 项目中有私有仓库模块时,使用 npm ci 命令的安装步骤

    项目中有私有仓库模块时,使用 npm ci 命令的安装步骤: 先安装私有仓库模块:npm install <npm包名> --registry=<npm包源> 再运行命令:np ...