2017-01-08 3 views
0

私はプロジェクトを持っており、そのための正しいアルゴリズムと方法を見つけようとしています。Active Directory上のPythonでUserIDとIPマッピングを読む

Active Directoryのパスの1つに位置するADUserIPmap.txtというファイルがあります。私は3番目の列(1482857637)を交換する必要が

172.16.205.5 domain\administrator 1482857637 Tue Dec 27 19:53:57 2016 

172.16.200.237 domain\admin 1482857408 Tue Dec 27 19:50:08 2016 

172.16.200.254 domain\cppm 1482857802 Tue Dec 27 19:56:42 2016 

172.16.200.200 domain\admin 1482857830 Tue Dec 27 19:57:10 2016 

そのユーザのgivenName属性を持つ:

このファイルには、このような行が含まれています。そして、このgivenNameデータは、このようなpowershellコマンド出力から得られます。

C:\Users\Administrator> Get -ADuser -Identity 1482857637 
GivenName: nthere 
SamAccountName: 1482857637 

Pythonスクリプトは、Active Directoryとpowershellコマンドでも機能します。

これらの手順がすべて完了したら、xml apiを使用してこれらの情報をファイアウォールに送信します。

質問 1)ADUserIPmap.txtはログファイルであり、行は常に増加します。私はすべてのファイルを何度も何度も読みたいとは思わない。この場合の正しい方法は何ですか?

2)は、変数に現在位置を割り当て、ファイルを最初に読んだ後、Active Directoryから

おかげ

答えて

0

Q1)をGIVENNAMEフィールドを取得する任意の簡単な方法があります。その後、反復する前にそこにジャンプします。

with open('foo.txt') as f: 
    z = f.seek(last_read) 
    for line in f: 
     print(line) 
    last_read = f.tell() 

あなたがlast_readを永続化する必要がある場合は、複数の物事を持続辞書にそれらを入れて、辞書をpickle化したい場合は、pickle

import pickle 
# retrieve before processing 
with open('last_read.pkl') as f: 
    last_read = pickle.load(f) 

#process 
with open('foo.txt') as f: 
    z = f.seek(last_read) 
    for line in f: 
     print(line) 
    last_read = f.tell() 


# save after processing 
with open('last_read.pkl', 'wb') as f: 
    pickle.dump(last_read, f) 

を使用しています。 PyPi

のいくつかのActive Directoryのライブラリがあるよう


Q2)が見えます

関連する問題