恐怕我又有点卡住了。我一直在互联网上寻找任何可能需要做同样事情的人,而且似乎确实有一些人已经做到了,但我就是无法将所有拼图拼凑在一起。
简而言之:我需要获取 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 的帮助,不胜感激 :)