MSSQLデータベースのユーザーリストと無効なADユーザーリストを比較するスクリプトを作成しました。 AD認証用のツールは、次の形式(列間のスペースをさらに含む)でデータを返すため(Pythonで)比較を許可するには、データを解析する必要があります。
User info (Level-2):
====================
Name: domain\username
UPN: [email protected]
Generated UPN: NO
DN: DN....
Uid: 123456
Gid: 123456
Gecos: User Name
Shell: /shell/path
Home dir: /homedir
Other attributes: ....
Other attributes: ....
Account disabled (or locked): TRUE
Other attributes: ....
Other attributes: ....
Other attributes: ....
etc
コマンドラインで次のアプローチを使用すると効果がありますが、非常に混乱しているので、誰かがよりきれいなアプローチを提案できることを願っています。私はawkを試しましたが、コマンドのサイズを減らすのに大きな成功を収めませんでした。
/opt/util/enum-users --level 2 |
grep "Name:\|Account disabled (or locked): TRUE" |
grep -x "Account disabled (or locked): TRUE" -B 1 |
grep "Name:" |
sed -r 's/^.{35}//'
すると、必要に応じてデータが出力されます。
username
username
etc
ベストアンサー1
より効率的かどうかはわかりませんが、正確に次のようにできますawk
。
awk -F': *' '$1 == "Name" {name = $2; next};
$0 == "Account disabled (or locked): TRUE" {
print gensub(/.*\\/, "", 1, name)
}'