5 votes

Comment puis-je savoir par programmation si une machine Mac OS X est liée à un domaine Active Directory ?

Cette commande : dsconfigad -show fait ce dont j'ai besoin mais j'ai besoin de droits d'administrateur pour l'exécuter.

La commande ci-dessus affiche des informations qui m'intéressent :

You are bound to Active Directory:
      Active Directory Forest        = xx.xxxxxx.local
      Active Directory Domain        = xx.xxxxxx.local
      Computer Account               = (computer name)

J'aimerais pouvoir obtenir la Active Directory Domain vu ci-dessus de manière programmatique, et de préférence sans avoir les permissions sudo.

Des suggestions ? J'ai parcouru les documents de l'Open Directory et la façon de procéder ne me paraît pas évidente. J'ai également essayé quelques exemples de code juste pour interroger l'AD pour quelque chose sans succès... Je vais continuer à y travailler, mais j'espérais que quelqu'un ici aurait des connaissances à partager.

2voto

Simon Urbanek Points 7803

Sans authentification du nœud, vous devriez au moins voir si AD est lié en regardant les plugins OD actifs - ils devraient inclure AD s'il est lié. Il devrait inclure AD s'il est lié. Il peut ou non montrer le domaine (typiquement, il le fait pour LDAP, mais je n'ai pas AD pour tester ici, donc votre kilométrage peut varier) :

Swift

import Foundation
import OpenDirectory

let mySession = ODSession.default()
do {
    print(try mySession?.nodeNames())
}
catch {
    print("error: \(error)")
}

Objectif-C

#include <Foundation/Foundation.h>
#include <OpenDirectory/OpenDirectory.h>

int main(int ac, char **av) {
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  ODSession *mySession = [ODSession defaultSession];
  NSError *err = 0;
  NSArray *nodeNames = [mySession nodeNamesAndReturnError:&err];
  if (err) NSLog(@"error: %@", err);
  if (nodeNames) NSLog(@"nodes: %@", nodeNames);
  [pool release];
  return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X