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实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
详解Python中的正则表达式的用法
Apr 09 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
python中单例常用的几种实现方法总结
Oct 13 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
手写一个python迭代器过程详解
Aug 27 Python
Python猜数字算法题详解
Mar 01 Python
使用pytorch实现论文中的unet网络
Jun 24 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
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
django 简单实现登录验证给你
2019/11/06 Python
python实现字典嵌套列表取值
2019/12/16 Python
pycharm快捷键汇总
2020/02/14 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
python爬取天气数据的实例详解
2020/11/20 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
校园公益广告语
2014/03/13 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
个人典型事迹材料
2014/12/30 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书