Active DirectoryおよびFirebirdから情報を取得する

すべての良い一日。 Active Direcoty(特に、特定の権利グループに属するユーザーに関する情報)およびFirebirdデータベースから情報を取得するタスクがありました。 Pythonで似たようなものを実装したいと思います。 しかし、どのように想像することはできません。 たくさんの資料を調べましたが、それらを体系化することは難しいと思います。 私はこの問題に関してどんな援助をもうれしく思います。



可能な解決策



Active Directoryから情報を取得するためのソリューションは、 ここにあります 。 Python active_directory、win32api用のモジュールを提供しました。 しかし、スクリプトを実行するとエラーが発生します



UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-18: ordinal not in range(128)







エンコーディングを使用したものですが、問題を解決する方法がわかりません。 助けて!



尊敬されるctrlokが助言したように、ldapモジュールを使用したはまだあります。







Active Directoryから現在のユーザー数とそのリストを取得する実用的な例を次に示します



# -*- coding: cp1251 -*-

import codecs, sys

ctrl = 'domain_name'

outf = codecs.getwriter('cp1251')(sys.stdout, errors='replace')

sys.stdout = outf



import win32com.client



def get_all_users_in_domain():

conn = win32com.client.Dispatch("ADODB.Connection")

conn.Provider = "ADSDSOObject"

conn.Open("Active Directory Provider")

query = "SELECT ADsPath FROM 'LDAP://DC="+ctrl+"' WHERE objectClass='user' AND objectCategory='person'"

rs = conn.Execute(query)[0]

users = []

while not rs.EOF:

obj = win32com.client.GetObject(rs.Fields(0).Value)

users.append(obj)

rs.MoveNext()

conn.Close()

return (users)



def get_enabled_user_in_domain(users):

enabled_users = []

for x in range(len(users)):

if users[x].AccountDisabled:

enabled_users.append(users[x])

return (enabled_users)



def print_user (users):

print u" %d \n" %(len(users))

for x in range(0, len(users)):

print users[x].Name.replace(u'CN=','')



users = get_all_users_in_domain()

enabled_users = get_enabled_user_in_domain(users)

print_user(enabled_users)









ここで問題は、ここで各ユーザーが属するグループを追加する方法です...



All Articles