Python通过kerberos安全认证操作kafka方式
作者:小竹筒 发布时间:2022-12-23 21:39:49
如何通过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()
来源:https://blog.csdn.net/weixin_42261073/article/details/84074470


猜你喜欢
- 微服务架构在现代软件开发中日益普及,它将复杂的应用程序拆分成多个可独立部署的小型服务。本文将介绍如何使用 Python 的 FastAPI
- 本文实例为大家分享了TensorFlow实现简单线性回归的具体代码,供大家参考,具体内容如下简单的一元线性回归一元线性回归公式:其中x是特征
- 本文实例为大家分享了python openCV自制绘画板的具体代码,供大家参考,具体内容如下import numpy as npimport
- 建议用pycharm,使用比较方便,并且可以直接编辑html文件import timelocatime = time.strftime(&q
- 本文实例讲述了Go语言中使用反射的方法。分享给大家供大家参考。具体实现方法如下:// Data Modeltype Dish struct
- WaitGroup概念Go标准库提供了WaitGroup原语, 可以用它来等待一批 Goroutine 结束底层数据结构// A WaitG
- 使用递归查找父元素,知道查到想要的元素,然后return getParentTag(startTag) { var self
- 基本思路使用GDAL创建Shapefile数据的基本步骤如下:使用osgeo.ogr.Driver的CreateDataSource()方法
- 在设计数据窗口时,在所有列的Background.Color属性中编写如下表达式: if ( IsRowNew(), 1090519039,
- Scala 循环有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类
- paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Lin
- 首先是下载图解1、首先卸载centos7中自带的mariadbrpm -qa|grep mariadb //查询出来已安装的mariadbr
- 本文实例讲述了JS实现DOM节点插入操作之子节点与兄弟节点插入操作。分享给大家供大家参考,具体如下:<!doctype html>
- 本文实例为大家分享了js实现黑白div块画空心图形的具体代码,供大家参考,具体内容如下<!DOCTYPE html><ht
- 前言ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不
- 前言: 最近在学习过程中总是遇到np.random.seed()这个问题,刚开始总是觉得不过是一个简单的随机数种子,就没太在意,后来遇到的次
- 今天要处理通知书上的日期,写的一个处理程序,效率可能不是最优的,不过实现功能绝对没问题。注:月份和天要分>10,=10,<10三
- DiscoArt 是一个很牛的开源模块,它能根据你给定的关键词自动绘画。绘制过程是完全可见的,你可以在 jupyter 页面上看见这个绘制的
- 问题最近在做项目的时候, dialog组件回调close里面 一般我都会加个resetFields 重置初始值和校验其他地方都没问题, 在t
- 目录一、介绍二、前提三、get的请求3.1 GET无参请求3.2 GET传参四、post请求五、Requests响应六、Request扩充七