Python实现Kerberos用户的增删改查操作

 更新时间:2020年12月14日 09:07:52   作者:源神  
这篇文章主要介绍了Python实现Kerberos用户的增删改查操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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 Beautiful Soup解析HTML内容

    如何用Python Beautiful Soup解析HTML内容

    Beautiful Soup是一种Python的解析库,主要用于解析和处理HTML/XML内容,详细介绍Beautiful Soup的使用方式和应用场景,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python pands实现execl转csv 并修改csv指定列的方法

    python pands实现execl转csv 并修改csv指定列的方法

    今天小编就为大家分享一篇python pands实现execl转csv 并修改csv指定列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python多线程入门学习

    Python多线程入门学习

    这篇文章主要介绍了Python多线程入门学习,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-12-12
  • python目标检测YoloV4当中的Mosaic数据增强方法

    python目标检测YoloV4当中的Mosaic数据增强方法

    这篇文章主要为大家介绍了python目标检测YoloV4当中的Mosaic数据增强方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python利用Selenium实现自动观看学习通视频

    Python利用Selenium实现自动观看学习通视频

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。本文主要介绍了利用Selenium实现自动观看学习通视频,需要的同学可以参考一下
    2021-12-12
  • python简单实现计算过期时间的方法

    python简单实现计算过期时间的方法

    这篇文章主要介绍了python简单实现计算过期时间的方法,涉及Python时间操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • python实现的B站直播录制工具

    python实现的B站直播录制工具

    这篇文章主要介绍了python实现的B站直播录播工具,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • 浅析PEP570新语法: 只接受位置参数

    浅析PEP570新语法: 只接受位置参数

    本文通过一个例子给大家介绍了PEP570新语法: 只接受位置参数的一些知识,感兴趣的朋友跟随小编一起看看吧
    2019-10-10
  • Pycharm及python安装详细步骤及PyCharm配置整理(推荐)

    Pycharm及python安装详细步骤及PyCharm配置整理(推荐)

    这篇文章主要介绍了Pycharm及python安装详细步骤以及PyCharm配置整理,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python Json读写操作之JsonPath用法详解

    Python Json读写操作之JsonPath用法详解

    JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java,这篇文章主要介绍了Python Json读写操作之JsonPath用法详解,需要的朋友可以参考下
    2023-04-04

最新评论