Python:如何打印AD用户的手机号码?
我又遇到点麻烦了,真是的。我在网上找了很多资料,想看看有没有人做过类似的事情,确实有一些人成功了,但我就是拼不出完整的拼图。
简单来说:我需要获取在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,我能看到我需要的属性(“mobile”),但我还是不知道怎么用Python把它打印出来……有没有办法通过Python打印LDAP对象的所有属性,如果有的话,能不能用active_directory模块?
编辑 #3:
没事了,我想我明白了。一旦我有了能正常工作的代码,我会把它发回来,以防其他人也遇到我遇到的这个难题。
编辑 #4:
结果我有点傻。这其实很简单,只需要用以下代码:
for user in active_directory.search (objectCategory='Person', objectClass='User'):
print user, user.mobile
再次感谢ivan_pozdeev的帮助,真心感谢 :)
1 个回答
请查看我帖子中的编辑 #4。这其实也不是我自己解决的,但感谢用户 ivan_pozdeev 指引了我正确的方向。
如果将来还有其他人看到这个帖子,可以先下载 AD Explorer,然后查看你想打印的属性名称。如果属性名称是“mobile”,你可以通过指定 user.mobile 来获取它(就像我那样)。
还有 Tim Golden,如果你看到这个,真是太棒了,你在 active_directory 模块上的工作非常出色,帮了我大忙。