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 相关文章推荐
Python入门篇之面向对象
Oct 20 Python
Python2中文处理纪要的实现方法
Mar 10 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
python机器学习之神经网络实现
Oct 13 Python
对Python中内置异常层次结构详解
Oct 18 Python
python list格式数据excel导出方法
Oct 31 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python二进制文件的转译详解
Jul 03 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
pandas的相关系数与协方差实例
Dec 27 Python
python interpolate插值实例
Jul 06 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 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
PHP新手上路(八)
2006/10/09 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
浅谈php处理后端&接口访问超时的解决方法
2016/10/29 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
python装饰器原理与用法深入详解
2019/12/19 Python
QML用PathView实现轮播图
2020/06/03 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
安全资料员岗位职责
2013/12/14 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
杜甫草堂导游词
2015/02/03 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS