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选择排序算法实例总结
Jul 01 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
python动态加载包的方法小结
Apr 18 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
python3操作mysql数据库的方法
Jun 23 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python: 传递列表副本方式
Dec 19 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
Python 如何解决稀疏矩阵运算
May 26 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
文件上传程序的全部源码
2006/10/09 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
浅谈js的异步执行
2016/10/18 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python3基础之list列表实例解析
2014/08/13 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
编写python代码实现简单抽奖器
2020/10/20 Python
.NET概念性的面试题
2012/02/29 面试题
大学自荐信
2013/12/12 职场文书
迎接领导欢迎词
2014/01/11 职场文书
学习十八大报告感言
2014/02/04 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
事业单位年度考核评语
2014/12/31 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
使用HttpSessionListener监听器实战
2022/03/17 Java/Android