日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python子进程kerberos_Python实现Kerberos用户的增删改查操作

發(fā)布時(shí)間:2023/12/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python子进程kerberos_Python实现Kerberos用户的增删改查操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、首先模擬python類似shell命令行操作的接口:

python安裝subprocess(本地)、paramiko(SSH遠(yuǎn)程)

#-*- 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常用的命令操作封裝成接口,其他簡(jiǎn)單。但需要交互的是刪除 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)

補(bǔ)充知識(shí):python操作有Kerberos認(rèn)證的hive庫(kù)

之前訪問hive都比較簡(jiǎn)單,直接用pyhive連接即可。

但是最近遇到了一個(gè)問題,hive有了Kerberosren認(rèn)證。

最終經(jīng)過各種嘗試和靈感迸發(fā),終于解決了這個(gè)問題,遂記錄之。

代碼

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不要改

運(yùn)行效果

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

總結(jié)

以上是生活随笔為你收集整理的python子进程kerberos_Python实现Kerberos用户的增删改查操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。