Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器

 1.前言

        首先要实现这个功能,必须先搞懂如何通过C++调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c++ 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。

2 模块功能

2.1python

2.1.1 python功能

        通过ldap3协议实现NTLM的认证,因此主体功能基本全是由python实现。

2.1.2 python的环境支持

sudo apt install python3-pip //安装python环境的支持

        上面这条命令你要注意,如果你有其他的python版本,或许你可以不使用python3-pip工具,而单独的安装pip管理工具。ubuntu是上,你可以通过cd /usr/bin/下,ls python*查看你有多少个python的版本。

pip install ldap3 //安装ldap3,用于认证

 2.1.3 python代码的实现NTLM认证

        python我不懂,只能粗略的了解代码功能,因为这里的实现是非常简单的,代码量非常的少。

因此哪怕是第一次接触python的基本也能看懂,只要你有其他语言的基本功。这里先使用ubuntu命令行进行NTLM认证,便于查看错误信息。想放在python.py中,将第三步以下全部命令放到.py文件中,在文件开头添加 import ldap3,就可以了。

第一步:运行python3

第二步:导入ldap3模块   import ldap3

        如果你在导入模块的时候,出现了类似这种报错信息,说明了你的pip工具安装ldap3并没有安装到python3中,你需要判断出ldap安装在哪个版本中,通过2.1.2的内容查看你有多少个版本,然后修改第一步导入的python版本。或者你根本没有安装ldap3

        >>> import ldap3
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        ModuleNotFoundError: No module named 'ldap3'

第三步:传入你服务器的IP    server=ldap3.Server('ldap://<AD服务器地址>:端口号')

第四步,传入你需要认证的用户信息

conn=ldap3.Connection(server,user='username',authentication=ldap3.NTLM,password='<username>')

第五步:conn.bind() 进行绑定 三四步只是保存信息,不会发生任何情况,你参数的错误全是在这一步进行判断,通过返回对应的ldap_error_code,检查你导入数据的错误,如果成功返回

true

2.2 C++

2.2.1 C++功能

        C++只是负责传递认证账号的信息,username,userpasswd等。还有接收python的返回值,基本是ldap的error_code。

2.2.2 C++调用python

        这里我就不详细解释如何调用,因为CSDN大佬发了很多文章,包括小破站也有视频教学。这里推荐几篇文章,再简单说一下我用的使用不懂以及出现错误的地方,希望对python不懂的有帮助

  1. PyRun_SimpleString("sys.path.append('./script')");  //这里传入 python脚本路径的时候,不要写入脚本文件名,只需要制定python脚本所在的文件夹即可

  2. pModule = PyImport_ImportModule("myadd");   //这里传入的模块名字,是你python脚本的文件名,不要加.py

  3. pFunc = PyObject_GetAttrString(pModule, "say");   //这里传入的方法,就是python中你封装的方法,例如这里面的方法就是say,类似于C/C++的大括号,def say():以下的所有缩进内容都属于这个方法

    C++调用Python的方法   //这篇文章非常的好,非常详细,如果我编写的时候看的这个文章,起码节约半个小时,所以我这篇文章主要是偏向如何使用python脚本实现NTLM认证。

3.结言

       加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/170671.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双十一钜惠!三门不可多得的HarmonyOS学习教程

今年双十一&#xff0c;各大商城优惠不断。这里介绍三门不可多得的HarmonyOS学习教程&#xff0c;都有非常大的折扣优惠。 《鸿蒙HarmonyOS手机应用开发实战》 《鸿蒙HarmonyOS手机应用开发实战》是由清华大学出版社出版的。 目前当当是“7.56折”&#xff1a;http://produc…

单例设计模式

1.单例模式 是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建&#xff0c;这个类提供了一种访问其唯一的…

纯c语言模拟栈和队列(初学必看)

一、栈(Stack) 1.栈的概念及其结构 栈是一种特殊的线性表&#xff0c;在栈这个结构里&#xff0c;越先存进去的数据越难取出来。 这个结构就像是一个只有一端有打开的容器&#xff0c;越先放进去的球越在底部&#xff0c;想要把底部的球拿出来&#xff0c;就必须先把前面的求…

小程序day05

使用npm包 Vant Weapp 类似于前端boostrap和element ui那些的样式框架。 安装过程 注意:这里建议直接去看官网的安装过程。 vant-weapp版本最好也不要指定 在项目目录里面先输入npm init -y 初始化一个包管理配置文件: package.json 使用css变量定制vant主题样式&#xff0…

Halcon WPF 开发学习笔记(2):Halcon导出c#脚本和WPF初步开发

文章目录 前言HalconC#教学简单说明如何二开机器视觉如何二次开发Halcon导出Halcon脚本新建WPF项目&#xff0c;导入Halcon脚本和Halcon命名空间 前言 我目前搜了一下我了解的机器视觉软件&#xff0c;有如下特点 优点缺点兼容性教学视频(B站前三播放量)OpenCV开源&#xff0…

猫罐头怎么选择?精选的5款口碑好的猫罐头推荐!

猫罐头因其成分约80%为水分&#xff0c;对于不喜欢喝水的猫咪来说&#xff0c;正是可以用来补充水分的替代方案。 而近年来市面上也有越来越多讲究食用安全性的猫罐头&#xff0c;像是强调无添加多余加工品、或是不含谷物成分等的商品。但也因为种类过多&#xff0c;让铲屎官容…

Ansible角色定制实例

目录 角色定制&#xff1a;roles 角色定制实例&#xff1a;利用角色部署wordpress 1.在roles目录下生成对应的目录结构 2.定义配置文件 ①nginx ②php ③mysql ④定义剧本文件 ⑤启动服务 角色定制&#xff1a;roles 对于普通的剧本&#xff08;playbook&#xff09;有…

Jira Software Enterprise Crack

Jira Software Enterprise Crack Jira软件是为您的应用程序组中的每一个成员设计、监控和启动优秀软件的。 策略&#xff1a;生成用户故事和问题&#xff0c;策略冲刺&#xff0c;并在应用程序团队中分配任务。 跟踪&#xff1a;在具有绝对可见性的完整背景下&#xff0c;确定团…

Python---字典---dict

1、为什么需要字典 如果想要存储一个人的信息&#xff0c;姓名&#xff1a;Tom&#xff0c;年龄&#xff1a;20周岁&#xff0c;性别&#xff1a;男&#xff0c;如何快速存储。 person [Tom, 20, 男] 在日常生活中&#xff0c;姓名、年龄以及性别同属于一个人的基本特征。 但…

玩转硬件之Micro:bit的玩法(五)——垃圾分类

垃圾分类&#xff0c;为了美好的明天 垃圾是我们生活中不可避免的产物&#xff0c;每天都有大量的垃圾被丢弃&#xff0c;如果不加以处理&#xff0c;就会给环境和人类带来严重的危害。 垃圾分类是一种有效的垃圾管理方式&#xff0c;它是指按照一定的标准或规则&#xff0c;将…

从单服务设计看SLA保证

文章首发公众号&#xff1a;海天二路搬砖工 0. 引言 在微服务架构中&#xff0c;谈到SLA保证&#xff0c;我们更多是从宏观的角度来需求解决方案。比如&#xff0c;通过合理服务拆分来增加系统整体的可维护性&#xff1b;通过多实例部署来保证系统的灾备。但是单个服务是可靠…

AYIT-ACM实验室发展历程

AYIT-ACM简介 ACM协会为你的梦想插上翅膀。 本院ACM协会成立于2012年 2008年开始小规模参加河南省竞赛 2014年成功实现金牌零突破 指导老师&#xff1a;孙高飞老师 安阳工学院计算机科学与信息工程学院ACM队是一支优秀的队伍&#xff0c;一支充满活力与激情的队伍&am…