介绍
利用Python怎么对Kerberos用户进行增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1,首先模拟Python类似壳命令行操作的接口:
Python安装子流程(本地),paramiko (SSH远程)
# - *安康;编码:UTF-8 - * - # !/usr/bin/python import 操作系统,系统 import 子流程 import paramiko import 设置 , class RunCmd(对象): 自我,def __init__ (): 时间=self.cmd 才能;& # 39;ls # 39; , ,@staticmethod ,def local_run (cmd): 打印才能(& # 39;start 执行……& # 39;) 打印才能(& # 39;cmd is - - - - - -→, % & # 39;, %, str (cmd)) s 才能=,subprocess.Popen (str (cmd), shell=True,, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) ,,,err =, s.communicate () 打印才能(“outinfo  is - - - - - -→, % s", %,) 打印才能(“errinfo  is - - - - - -→, % s", %,犯错) 打印才能(& # 39;finish 执行……& # 39;) 打印才能(& # 39;结果:- - - - - -祝辞,% & # 39;,%,s.returncode) return s.returncode才能 , ,@staticmethod ,def remote_run(主机,用户名,密码,港口,cmd): 时间=client 才能;paramiko.SSHClient () client.set_missing_host_key_policy才能(paramiko.AutoAddPolicy ()) client.connect才能(=主机,主机名,端口=int(港口),用户名=用户名,密码=密码,超时=5) ,,,stdin、stdout, stderr =, client.exec_command (cmd) 时间=result 才能;stdout.read () client.close才能() return 才能结果 , ,@staticmethod ,def krb_run (cmd): 打印才能(& # 39;krb_run 开始……& # 39;) 打印才能(& # 39;cmd is - - - - - -→, % & # 39;, %, str (cmd)) result 才能=,RunCmd.remote_run (settings.USERNAME, settings.KRB_HOST,还以为,settings.PASSWORD, settings.PORT,, cmd) 打印才能(& # 39;结果:- - - - - -祝辞,% & # 39;,%,结果) 打印才能(& # 39;krb_run 完成……& # 39;) return 才能;结果
2, Kerberos常用的命令操作封装成接口,其他简单,但需要交互的是删除本金
, def delete_user(自我,,用户名): 时间=cmd 才能;r"““ ,,expect -c “ ,,set timeout 1; ,,spawn kadmin.local  -q \“delete_principal {主要}\“, ,,expect 是的/no {{, send \“是的\ r \“,}},; ,,expect * \ r ,,expect 。\ r ,,expect eof ,,,, “““才能.format(主要=用户名) RunCmd.krb_run才能(cmd)
<强>补充知识:python操作有Kerberos认证的蜂巢库强>
之前访问蜂巢都比较简单,直接用pyhive连接即可。
但是最近遇到了一个问题,蜂巢有了Kerberosren认证。
最终经过各种尝试和灵感迸发,终于解决了这个问题,遂记录之。
代码
得到pyhive.hive import 连接 时间=con 连接(主机=& # 39;xxxx # 39;,端口=10000,auth=& # 39; kerberos # 39;, kerberos_service_name=癶ive") 时间=cursor con.cursor () cursor.execute (& # 39; select *,得到tmp.pricing_calculate_result_spark where time_id=?01907171355“, limit 10 1 & # 39;) 时间=datas cursor.fetchall () 打印(数据) cursor.close () con.close ()
端口和ip都换成自己的,身份验证和kerberos_service_name不要改
运行效果
关于利用Python怎么对Kerberos用户进行增删改查操作问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。