当前位置: 移动技术网 > IT编程>脚本编程>Python > Python通过kerberos安全认证操作kafka方式

Python通过kerberos安全认证操作kafka方式

2020年06月14日  | 移动技术网IT编程  | 我要评论

msocache是什么文件夹,倩女幽魂五行计算器,这该死的爱情

如何通过kerberos认证.

1.安装kerberos客户端

centos:

yum install krb5-workstation

使用which kinit查看是否安装成功;

2.拷贝kerberos配置文件

conf目录下krb5.conf和kafka.keytab和jaas.conf拷贝到客户端机器的etc目录, 同时,krb5.conf中的kdc集群主机名和ip配置到客户端机器hosts配置文件中

3.kinit客户端通过kerberos认证

获取principal

klist -kt kafka.keytab

4.安装python-gssapi

pip install gssapi

遇到的问题,如下:

a.在linux中执行wget命令提示 -bash: wget: command not found 解决方法

yum -y install wget

b.报错:bash: pip: command not found

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip -v  #查看pip版本

python -m pip install --upgrade --force pip easy_install -u setuptools pip install --upgrade setuptools

3.pip安装出现command “python setup.py egg_info” failed with error code 1 的解决方法

traceback (most recent call last): file “”, line 1, in file “/tmp/pip-install-6hfde3/gssapi/setup.py”, line 109, in raise exception("could not find main gssapi shared library. please " exception: could not find main gssapi shared library. please try setting gssapi_main_lib yourself or setting enable_support_detection to ‘false'

command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-6hfde3/gssapi/

yum install -y krb5-devel.x86_64

4.关于error: command ‘gcc' failed with exit status 1错误的解决方法

yum install gcc python-devel

安装kafka-python

pip install kafka-python

初始化环境变量

export kafka_opts="-djava.security.auth.login.config=/etc/conf/jaas.conf -djava.security.krb5.conf=/etc/krb5.conf"

python操作kafka样例

from kafka import kafkaproducer
from kafka.errors import kafkaerror
import os

class kafka_producer():
 def __init__(self, kafkahost, kafkaport, kafkatopic):
  self.kafkahost = kafkahost
  self.kafkaport = kafkaport
  self.kafkatopic = kafkatopic
  self.producer = kafkaproducer(
    bootstrap_servers = '{kafka_host}:{kafka_port}'.format(kafka_host=self.kafkahost,kafka_port=self.kafkaport),
    security_protocol="sasl_plaintext",
    sasl_mechanism="gssapi",
    sasl_kerberos_service_name="kafka",
    compression_type='gzip' #压缩方式
    )
 def sendfiledata(self, params):
  try:
    f = open(params,'rb')
    parmasmessage = f.read(-1).strip()
    producer = self.producer
    producer.send(self.kafkatopic, parmasmessage)
    producer.flush()
  except kafkaerror as e:
    print (e)
  
def main():
 filepath = "/home/public/data/"
 topic = "demo"
 producer = kafka_producer("xxx.xx.xx.xx","9092",topic)
 dirlist = os.listdir(filepath)
 for filename in dirlist:
  producer.sendfiledata(filepath+filename)
 print('send success!!!')

if __name__=='__main__':
 main()

以上这篇python通过kerberos安全认证操作kafka方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网