0

恐怕我又有点卡住了。我一直在互联网上寻找任何可能需要做同样事情的人,而且似乎确实有一些人已经做到了,但我就是无法将所有拼图拼凑在一起。

简而言之:我需要获取 AD 中列出的所有用户的手机号码。

到目前为止,最简单和最简单的方法似乎是 Tim Golden 的 active_directory 模块,它让我了解我的代码到目前为止的样子(基本上是他的示例编码的直接复制和粘贴):

#!/usr/bin/env python
import active_directory

def main():

    for user in active_directory.search (objectCategory='Person', objectClass='User'):
      print user

if __name__ == '__main__':
    main()

上面的代码很有效,但我只是不知道如何在输出中包含手机号码。我不知道 AD/LDAP 中该字段的名称是什么,但我怀疑它是“MobileTelephoneNumber”。

有没有人知道一种快速而肮脏的方法来包含每个用户的手机号码?它不必只是号码,可以是所有联系方式。

编辑

我猜测我需要将编码稍微修改为如下所示:

    for user, number in active_directory.search (objectCategory='Person', objectClass='User', objectClass='MobileTelephoneNumber'):
      print user, number

但这似乎不起作用。我确信必须有某种方法可以做到这一点,但我似乎无法弄清楚。如果我能弄清楚数字在 AD 中的确切存储位置,我可能最终能够弄清楚,但似乎并没有太多关于它的信息,或者至少我能够理解的信息。

编辑#2:
感谢 ivan_pozdeev,我能够看到我需要的属性(“移动”),但我仍然不知道如何通过 Python 实际打印它......有没有办法打印 LDAP 对象的通过 Python 的完整属性,如果是,通过 active_directory 模块?

编辑#3:
没关系,我想我现在明白了。一旦我的代码或多或少可以工作,我会将其发布回此处,以防万一其他人遇到我所拥有的同一块砖墙。

编辑#4:
原来我有点白痴。这显然就像使用以下代码一样简单:

    for user in active_directory.search (objectCategory='Person', objectClass='User'):
      print user, user.mobile

再次感谢 ivan_pozdeev 的帮助,不胜感激 :)

4

1 回答 1

0

请参阅我的帖子中的 EDIT #4。我也没有真正解决这个问题,但感谢用户 ivan_pozdeev 为我指明了正确的方向。

对于以后偶然发现这篇文章的任何人,请获取 AD Explorer,然后查看您希望打印的属性的名称。如果属性名称是“mobile”,您可以通过指定 user.mobile 来获取它(如我的情况)。

还有 Tim Golden,如果你读过这篇文章,那么在 active_directory 模块上的工作非常出色。它只是设法保存了我的培根。

于 2013-02-14T10:01:53.463 回答