Python实现Kerberos用户的增删改查操作


Posted in Python onDecember 14, 2020

1、首先模拟python类似shell命令行操作的接口:

python安装subprocess(本地)、paramiko(SSH远程)

#-*- coding: UTF-8 -*-
#!/usr/bin/python
import os, sys
import subprocess
import paramiko
import settings
 
class RunCmd(object):
 def __init__(self):
  self.cmd = 'ls'
 
 @staticmethod
 def local_run(cmd):
  print('start executing...')
  print('cmd is -------> %s' % str(cmd))
  s = subprocess.Popen(str(cmd), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  out, err = s.communicate()
  print("outinfo is -------> %s" % out)
  print("errinfo is -------> %s" % err)
  print('finish executing...')
  print('result:------> %s' % s.returncode)
  return s.returncode
 
 @staticmethod
 def remote_run(host, username, password, port, cmd):
  client = paramiko.SSHClient()
  client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  client.connect(hostname=host, port=int(port), username=username, password=password, timeout=5)
  stdin, stdout, stderr = client.exec_command(cmd)
  result = stdout.read()
  client.close()
  return result
 
 @staticmethod
 def krb_run(cmd):
  print('krb_run start...')
  print('cmd is -------> %s' % str(cmd))
  result = RunCmd.remote_run(settings.KRB_HOST, settings.USERNAME, settings.PASSWORD, settings.PORT, cmd)
  print('result:------> %s' % result)
  print('krb_run finish...')
  return result

2、Kerberos常用的命令操作封装成接口,其他简单。但需要交互的是删除 principal

def delete_user(self, username):
  cmd = r"""
   expect -c "
   set timeout 1;
   spawn kadmin.local -q \"delete_principal {principal}\" ;
   expect yes/no {{ send \"yes\r\" }} ;
   expect *\r
   expect \r
   expect eof
   "
  """.format(principal=username)
  RunCmd.krb_run(cmd)

补充知识:python操作有Kerberos认证的hive库

之前访问hive都比较简单,直接用pyhive连接即可。

但是最近遇到了一个问题,hive有了Kerberosren认证。

最终经过各种尝试和灵感迸发,终于解决了这个问题,遂记录之。

代码

from pyhive.hive import connect
con = connect(host='XXXX',port=10000,auth='KERBEROS',kerberos_service_name="hive")
cursor = con.cursor()
cursor.execute('select * from tmp.pricing_calculate_result_spark where time_id="201907171355" limit 10,1')
datas = cursor.fetchall()
print(datas)
cursor.close()
con.close()

端口和ip都换成自己的,auth和kerberos_service_name不要改

运行效果

Python实现Kerberos用户的增删改查操作

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
go和python变量赋值遇到的一个问题
Aug 31 Python
python实现自主查询实时天气
Jun 22 Python
python导入模块交叉引用的方法
Jan 19 Python
python腾讯语音合成实现过程解析
Aug 01 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
Python高级特性 切片 迭代解析
Aug 23 Python
Python 单例设计模式用法实例分析
Sep 23 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 Python
python-地图可视化组件folium的操作
Dec 14 #Python
python多线程和多进程关系详解
Dec 14 #Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 #Python
pandas将list数据拆分成行或列的实现
Dec 13 #Python
pandas按照列的值排序(某一列或者多列)
Dec 13 #Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 #Python
pandas抽取行列数据的几种方法
Dec 13 #Python
You might like
3
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
html读出文本文件内容
2007/01/22 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
详解js闭包
2014/09/02 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python去掉字符串中空格的方法
2014/03/11 Python
python编码最佳实践之总结
2016/02/14 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Python @property装饰器原理解析
2020/01/22 Python
opencv+python实现均值滤波
2020/02/19 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
浅谈MySQL user权限表
2021/06/18 MySQL
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
mysqldump进行数据备份详解
2022/07/15 MySQL