You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将指定LDAP Shell脚本转换为Python 2.6.6版本代码

转换后的Python 2.6.6 LDAP查询代码

我帮你把这段Shell的LDAP查询脚本转换成兼容Python 2.6.6的代码,完全保留原Shell的所有参数配置:

首先先梳理原Shell脚本里的核心LDAP参数,确保转换时完全对齐:

  • LDAP服务器地址+端口:ldap.bbc.network.lcl:3477
  • 绑定用户DN:CN=LDAP, Mine,OU=Resource Accounts,OU=Enterprise,DC=bbc,DC=network,DC=lcl(Shell里的转义逗号\,在Python中不需要转义,直接写逗号即可)
  • 绑定密码:passwd
  • 搜索基准DN(base DN):DC=bbc,DC=network,DC=lcl
  • 动态过滤条件:对应Shell中的$1参数,我们在Python里通过命令行参数传入

下面是完整的转换代码:

import ldap
import sys

# 初始化LDAP连接,对应Shell的-h和-p参数
l = ldap.initialize('ldap://ldap.bbc.network.lcl:3477')
# 关闭引用避免环境问题,启用简单认证(对应Shell的-x参数)
l.set_option(ldap.OPT_REFERRALS, 0)
l.protocol_version = ldap.VERSION3

# 绑定用户信息,对应Shell的-D和-w参数
bind_dn = "CN=LDAP, Mine,OU=Resource Accounts,OU=Enterprise,DC=bbc,DC=network,DC=lcl"
bind_password = "passwd"

try:
    # 执行绑定操作
    l.simple_bind_s(bind_dn, bind_password)
    
    # 搜索参数配置,对应Shell的-b和$1参数
    base_dn = "DC=bbc,DC=network,DC=lcl"
    scope = ldap.SCOPE_SUBTREE  # 和ldapsearch默认搜索范围一致
    # 获取命令行传入的过滤条件,默认匹配所有对象
    search_filter = sys.argv[1] if len(sys.argv) > 1 else "(objectClass=*)"
    retrieve_attributes = None  # 检索所有属性,对应ldapsearch默认行为
    
    # 执行LDAP搜索
    result_id = l.search(base_dn, scope, search_filter, retrieve_attributes)
    
    # 遍历并打印搜索结果,模拟ldapsearch的输出格式
    while True:
        result_type, result_data = l.result(result_id, 0)
        if not result_data:
            break
        if result_type == ldap.RES_SEARCH_ENTRY:
            print("dn: {}".format(result_data[0][0]))
            for attr, values in result_data[0][1].items():
                for val in values:
                    print("{}: {}".format(attr, val))
            print("\n")
finally:
    # 主动关闭LDAP连接
    l.unbind_s()

关键参数对应说明

  • ldap.initialize('ldap://ldap.bbc.network.lcl:3477'):完全对应Shell的-h ldap.bbc.network.lcl -p 3477配置
  • bind_dn:对应Shell中-D指定的绑定用户身份DN
  • bind_password:对应Shell中-w passwd的密码配置
  • base_dn:对应Shell中-b指定的搜索基准路径
  • search_filter:对应Shell的$1参数,执行脚本时可通过命令行传入过滤条件,比如python ldap_query.py "(cn=test_user)"

使用注意事项

  1. 确保Python 2.6.6环境已安装兼容的python-ldap模块,可执行pip install python-ldap==2.4.10安装适配版本
  2. 执行脚本时直接传入过滤条件即可,和原Shell脚本的使用方式一致
  3. 如果不需要打印结果,只需获取数据,可修改最后的遍历逻辑,将结果存入变量而非打印

内容的提问来源于stack exchange,提问作者Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:53