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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
Python线程指南分享
Nov 19 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
python3让print输出不换行的方法
Aug 24 Python
详解如何修改python中字典的键和值
Sep 29 Python
Python 生成短8位唯一id实战教程
Jan 13 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
Cakephp 执行主要流程
2010/03/24 PHP
解析php5配置使用pdo
2013/07/03 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
JS backgroundImage控制
2009/05/19 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
python2.7实现邮件发送功能
2018/12/12 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
应届毕业生求职信
2013/11/30 职场文书
小学清明节活动方案
2014/03/08 职场文书
网络编辑岗位职责
2014/03/18 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
R9700摩机记
2022/04/05 无线电
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS