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 相关文章推荐
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python实现的栈(Stack)
Jan 26 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
python爬取网易云音乐评论
Nov 16 Python
python使用knn实现特征向量分类
Dec 26 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
python利用faker库批量生成测试数据
Oct 15 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
Python 求向量的余弦值操作
Mar 04 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
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
python学生信息管理系统(初级版)
2018/10/17 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
浅谈Python 函数式编程
2020/06/20 Python
设计师个人求职信范文
2014/02/02 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
微电影大赛策划方案
2014/06/05 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
vue实现同时设置多个倒计时
2021/05/20 Vue.js
利用Python多线程实现图片下载器
2022/03/25 Python
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
Python实现双向链表基本操作
2022/05/25 Python