So, I’ve created a script that searches AD for a list of users in a specific OU, and outputs this to a text file. I need to format this text file. The top OU I’m searching contains within it an OU for each location of this company, containing the user accounts for that location.
Here’s my script:
import active_directory
import sys
sys.stdout = open('output.txt', 'w')
users = active_directory.AD_object ("LDAP://ou=%company%,dc=%domain%,dc=%name%
for user in users.search (objectCategory='Person'):
print user
sys.stdout.close()
Here’s what my output looks like, and there’s just 20-something lines of this for each different user:
LDAP://CN=%username%,OU=%location%,OU=%company%,dc=%domain%,dc=%name%
So, what I want to do is just to put this in plain English, make it easier to read, just by showing the username and the subset OU. So this:
LDAP://CN=%username%,OU=%location%,OU=%company%,dc=%domain%,dc=%name%
Becomes THIS:
%username%, %location%
If there’s any way to export this to .csv or a .xls to put into columns that can be sorted by location or just alphabetical order, that would be GREAT. I had one hell of a time just figuring out the text file.
If you have a string like this
Then manipulating it is quite easy. If the format is standard and doesn’t change, the fastest way to manipulate it would just be to use string.split()
yields a list
Now we can access the items of the list
To get rid of the “, OU”, we’ll need to do another split.
CSV is just a text file, so all you have to do is change your file ending. Here’s a full example.
It’s not the prettiest solution around, but it should be easy enough to understand.