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制作爬虫爬取京东商品评论教程
Dec 16 Python
Django中的文件的上传的几种方式
Jul 23 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
Django框架使用mysql视图操作示例
May 15 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
如何使用python把ppt转换成pdf
Jun 29 Python
python算法题 链表反转详解
Jul 02 Python
Python3+Appium安装使用教程
Jul 05 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
python实现学生通讯录管理系统
Feb 25 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中利用post传递字符串重定向的实现代码
2011/04/21 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
ext jquery 简单比较
2010/04/07 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
预备党员思想汇报范文
2013/12/29 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
松材线虫病防治方案
2014/06/15 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014年协会工作总结
2014/11/22 职场文书
2015年父亲节寄语
2015/03/23 职场文书
python requests模块的使用示例
2021/04/07 Python
Python爬虫之爬取二手房信息
2021/04/27 Python
pandas中对文本类型数据的处理小结
2021/11/01 Python
Pandas 数据编码的十种方法
2022/04/20 Python