2015-12-31 1 views
-2

Je voudrais lister le contenu du groupe de domaine contenant les utilisateurs & ordinateurs, puis résoudre les noms d'ordinateur à partir de DNS et préparer la liste pour squid.Liste le contenu du groupe domaine de Windows à partir de Linux

Quelle est la meilleure façon de le faire? Je pensais à me connecter à ldap en utilisant bash ou perl, mais peut-être qu'il y a une meilleure méthode.

+2

Bienvenue à SO, s'il vous plaît montrer vos efforts de codage, SO n'est pas un service de rédaction de code. – Cyrus

+0

Ce n'est pas une question de langage, je peux coder par moi-même, plus probablement je cherche des conseils sur les principes, ou la meilleure façon de le faire. Une fois terminé, je vais poster un script complet ici. – Sigi

+0

D'accord, il serait utile de montrer ce que vous avez essayé ou recherché. Si vous voulez un nudge dans la bonne direction, voici un exemple de commande pour interroger AD: 'ldapsearch -w Mot de passe12 -h Xdc.mondomaine.com -p 636 -K /usr/ldap/etc/key.kdb -P CfGldap -b "ou = utilisateur s, dc = mydomain, dc = com" -D "uid = service-compte, ou = personnes, ou = utilisateurs, dc = mydomain, dc = com" uid = $ utilisateur cn' comme ainsi que cette question SO http://stackoverflow.com/questions/22224465/querying-windows-active-directory-server-using-ldapsearch-from-command-line –

Répondre

1

merci pour votre aide. J'ai créé ce script, il semble que ça fonctionne.

#!/bin/bash 

oIFS=$IFS 
IFS=$'\n' 

# list group members 
members=($(ldapsearch -h server -D 'user' -w 'passw' -x -b "DC=domain,DC=net" "(cn=Groupname)" | grep member | awk -F '[=,]' '{print $2}')) 

for ((i=0; i<${#members[@]}; i++)); 
do 
     member=($(echo "${members[$i]}")) 
     AccountType=$(ldapsearch -h server -D 'user' -w 'passw' -x -b "DC=domain,DC=net" "(cn=$member)" | grep sAMAccountType | awk '{print $2}') 
     if [ "$AccountType" == "805306369" ] 
     then 
       # this member is PC, let's resolve its IP 
       host=$(host $member.domain.net) 
       if [ $? -eq 0 ]; then 
         ip=$(echo $host| awk '{print $4}') 
         echo "$member has ip $ip" 
       else 
         echo "WARNING: $member not found!" 
       fi 
     elif [ "$AccountType" == "805306368" ] 
     then 
       echo "$member is User" 
     else echo "$member is neither PC, nor User" 
     fi 
done 

IFS=$oIFS