Python:如何打印AD用户的手机号码?

时间:2013-02-14 07:38:34

标签: python active-directory contacts

我又害怕了。我一直在寻找那些可能需要做同样事情的人,而且似乎确实有一些人管理过它,但我无法将所有部分的拼图整合在一起。

简而言之:我需要获取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实际打印它...有没有办法通过Python打印LDAP对象的完整属性,如果是这样,通过active_directory模块?

编辑#3:
没关系,想想我现在明白了。一旦我的代码或多或少都有效,我会把它发回给这里以防万一其他人遇到我所拥有的砖墙。

编辑#4:
事实证明我有点白痴。这显然与使用以下代码一样简单:

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

再次感谢你帮助ivan_pozdeev,感谢它:)

1 个答案:

答案 0 :(得分:0)

在我的帖子中查看编辑#4。我也没有真正解决这个问题,但感谢用户ivan_pozdeev指出了我正确的方向。

对于将来绊倒此帖子的其他人,请获取AD Explorer,然后查看您要打印的属性的名称。如果属性名称是“mobile”,您可以通过指定user.mobile来获取它(如我的情况)。

Tim Golden,如果你读过这篇文章,那就是active_directory模块的优秀作品。它只是设法拯救我的培根。