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 随机数生成的代码的详细分析
May 15 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python中装饰器级连的使用方法示例
Sep 29 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
Python 画出来六维图
Jul 26 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
python实现串口通信的示例代码
Feb 10 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
python基础之停用词过滤详解
Apr 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
token 机制和实现方式
2020/12/15 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python程序运行原理图文解析
2018/02/10 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
校园创业策划书
2014/01/14 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
村官个人总结范文
2015/03/03 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python