我又害怕了。我一直在寻找那些可能需要做同样事情的人,而且似乎确实有一些人管理过它,但我无法将所有部分的拼图整合在一起。
简而言之:我需要获取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,感谢它:)
答案 0 :(得分:0)
在我的帖子中查看编辑#4。我也没有真正解决这个问题,但感谢用户ivan_pozdeev指出了我正确的方向。
对于将来绊倒此帖子的其他人,请获取AD Explorer,然后查看您要打印的属性的名称。如果属性名称是“mobile”,您可以通过指定user.mobile来获取它(如我的情况)。
Tim Golden,如果你读过这篇文章,那就是active_directory模块的优秀作品。它只是设法拯救我的培根。