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代码使其加快作用域内的查找
Mar 30 Python
Python配置文件解析模块ConfigParser使用实例
Apr 13 Python
python中list常用操作实例详解
Jun 03 Python
解析Python中while true的使用
Oct 13 Python
Python实现计算最小编辑距离
Mar 17 Python
深入浅析python定时杀进程
Jun 06 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
python内存管理机制原理详解
Aug 12 Python
django中的图片验证码功能
Sep 18 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Anaconda详细安装步骤图文教程
Nov 12 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 输出缓存详解
2009/06/20 PHP
PHP读取xml方法介绍
2013/01/12 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
javascript数组去掉重复
2011/05/12 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
说一说Python logging
2016/04/15 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
python asyncio 协程库的使用
2021/01/21 Python
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
新品发布会策划方案
2014/06/08 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
Python基础之条件语句详解
2021/06/16 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python