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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python设计实现的计算器功能完整实例
Aug 18 Python
Python语言描述最大连续子序列和
Dec 05 Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
python opencv 简单阈值算法的实现
Aug 04 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
python 实现矩阵按对角线打印
Nov 29 Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
Python yield生成器和return对比代码实例
Apr 20 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 Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
基于zTree树形菜单的使用实例
2017/12/25 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python 文件转成16进制数组的实例
2018/07/09 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Python实现某论坛自动签到功能
2019/08/20 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python数据预处理方式 :数据降维
2020/02/24 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
迎八一活动主题
2014/01/31 职场文书
法人授权委托书范本
2014/04/04 职场文书
实习协议书范本
2014/04/22 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
婚前保证书范文
2015/02/28 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
员工离职证明范本
2015/06/12 职场文书