Régi számítógép accountok

Egy érdekes feladványt kaptam, amire végül frappáns megoldás született. Egy kolléga épp az Active Directoryja tartalmát próbálja rendezgetni. Kiderült, hogy rengeteg, már biztosan nem használt számítógép fiók maradt a rendszerben, azokat kellene kitörölgeti. Már csak az a kérdés, hogy melyik név él és melyik nem? Névkonvenció nincs, illetve igen laza, gyakoriak a "gyári nevek" megjelenése is, szóval nem lehet pusztán a név alapján eligazodni. Macerás lenne egy teljes leltárat készíteni, a felhasználók nem tudják megmondani a saját gépük nevét, nincsenek a gépek felmatricázva – szóval a rendrakás elején tart a csapat.

Az első ötletem az volt, hogy a Hyena segítségével gyűjtse ki az összes gépet, majd rakja őket a jelszavuk időbeli megváltoztatásának sorrendjébe. A jelszóházirend által megadottnál régebbi jelszóval rendelkező fiókok jó közelítéssel nem létező gépeket takarnak. Nos, nem jár le a jelszó – az ötletek el kellett vetni.

A második javaslat arra épült, hogy az ottani AD natív Windows Server 2003 alapú. Ezen az AD funkcionális szinten már működik az ADUC Saved Query funkciójában a last logon típusú lekérdezés. Itt viszont abba futottunk bele, hogy ezt a paramétert csak felhasználók esetén lehet – legalábbis a kezelőfelület szerint – lekérdezni.

Végül egy huszárvágással oldottuk meg a feladatot. Az ADUC lekérdezéseit XML formában le lehet menteni. Elkészítettünk egyet, amely a 60 napnál régebben belépett felhasználókat listázza. Az XML állomány tartalma a következő (A DSQUERYUIDATA mögött lévő husszú adatsort lerövidítettem, de bárki hozzájuthat a fenti módszer alkalmazásával):

<QUERY><NAME>inactive gép</NAME><DESCRIPTION></DESCRIPTION><DN></DN><FILTERLASTLOGON>60</FILTERLASTLOGON><LDAPQUERY>(&amp;(objectCategory=person)(ObjectClass=user))</LDAPQUERY><ONELEVEL>FALSE</ONELEVEL><COLUMNID>{FD99E777-4AFE-42CE-9557-5F20E702732B}</COLUMNID><DSQUERYUIDATA>050000000c00000043006…</DSQUERYUIDATA></QUERY>

Szépen látszik, hogy a lekérdezés eleje jól szerkeszthető. Átíruk "számítógép fiókra":

<QUERY><NAME>inactive gép</NAME><DESCRIPTION></DESCRIPTION><DN></DN><FILTERLASTLOGON>60</FILTERLASTLOGON><LDAPQUERY>(&amp;(objectCategory=computer))</LDAPQUERY><ONELEVEL>FALSE</ONELEVEL><COLUMNID>{FD99E777-4AFE-42CE-9557-5F20E702732B}</COLUMNID><DSQUERYUIDATA>050000000c00000043006…</DSQUERYUIDATA></QUERY>

 

Kipróbáltuk. Működött.

Ha most teljesen precíz lennék, akkor utánanéznék, hogy mi az a DSQUERYUIDATA meg a mögötte lévő adat, de nem teszem. Túl késő van, majd máskor.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: