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


Posted in Python onJune 06, 2020

如何通过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方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门及进阶笔记 Python 内置函数小结
Aug 09 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
名片管理系统python版
Jan 11 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
Python 恐龙跑跑小游戏实现流程
Feb 15 Python
pandas分批读取大数据集教程
Jun 06 #Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 #Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 #Python
python访问hdfs的操作
Jun 06 #Python
Python API 操作Hadoop hdfs详解
Jun 06 #Python
python读取hdfs上的parquet文件方式
Jun 06 #Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 #Python
You might like
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Javascript Global对象
2009/08/13 Javascript
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
Python 如何访问外围作用域中的变量
2016/09/11 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python异常处理机制结构实例解析
2020/07/23 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
工业自动化毕业生自荐信范文
2014/01/04 职场文书
行政人事岗位职责
2014/03/17 职场文书
大学专科求职信
2014/07/02 职场文书
申请吧主发表的感言
2015/08/03 职场文书
关于开学的感想
2015/08/10 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
SQL之各种join小结详细讲解
2021/08/04 MySQL
python实现Nao机器人的单目测距
2021/09/04 Python
Python使用永中文档转换服务
2022/05/06 Python