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中Genarator函数用法分析
Apr 08 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
python 使用get_argument获取url query参数
Apr 28 Python
一篇文章快速了解Python的GIL
Jan 12 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 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函数的方法
2013/11/13 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
python中的闭包用法实例详解
2015/05/05 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
Python加速程序运行的方法
2020/07/29 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
我爱我家教学反思
2014/05/01 职场文书
交通文明倡议书
2014/05/16 职场文书
Android自定义双向滑动控件
2022/04/19 Java/Android