Jump to content

ADS/LDAP Auslesen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute

 

ich habe ein php script mitwelchem ich benutzernamen und so weiter mit ldap auslesen kann, wenn ich jetzt aber einen wert auslesen gehe den nicht im ad eingetragen habe, wie z.B. "userworkstations oder lastlogon oder accountexpires" dann bekomme ich nur komische zahlen zurück so wie diese:

 

28782044582525300

 

ich werd nicht schlau daraus! ich habe eine w2k3 domäne und von hier habe ich die ldap felderbezeichnung: faq-o-matic.net Active Directory: LDAP-Feldnamen

 

wäre flott, wenn sich da einer auskennt und mir mitteilen kann warum das so ist, ich bin jetzt bereits zwei stunden am suchen :D

Link zu diesem Kommentar

Moin,

 

das liegt ganz einfach daran, dass viele Felder keine Textfelder sind, sondern die Daten in einem anderen Format speichern.

 

Bei "userWorkstations" etwa handelt es sich um ein Multivalue-Feld - AD gibt dir also mehrere Werte zurück, die du je nach Schnittstelle dann meist als Array erhältst und natürlich so behandeln musst. Bei lastLogon oder accountExpires handelt es sich um numerische Werte, die man erst in ein Datum umwandeln muss. Oft versagen dabei leider die Standard-Datumsfunktionen, weil AD die Werte manchmal etwas, naja, eigen speichert.

 

Folge mal dem Link oben auf der Seite, die du genutzt hast. Da ist eine Excel-Datei, die auch die Syntax der jeweiligen Felder angibt. Das illustriert etwas, was ich meine.

 

Du kannst dir mal ansehen, wie ich einige dieser Felder in José auslese. Vieles davon habe ich einfach von anderen Webseiten übernommen.

 

faq-o-matic.net Jose 2.1: Schon wieder ein kleines Update

 

Gruß, Nils

Link zu diesem Kommentar

hey, ich kenn jose finds echt cool, meine kentnisse reichen aber nicht so weit das ich wirklich verstehe wie jose funktioniert, ich bin neu auf dem gebiet und ich habe es mit php gemacht so:

 

1. ich lade mir den wert in einen array

 

$ergebnis[$i]['lastlogon'] = $info[$i]['lastlogon'][0];

 

2. dann printe ich es direkt

 

else if ($_GET['value'] == 'lastlogon')

{

echo '<table border=0>';

 

$sign='';

 

for ($i=0; $i<$anzahl; $i++)

{

$aktsign=$ergebnis[$i]['displayname'][0];

 

if ($aktsign!=$sign)

{

echo '<tr>';

echo '<td colspan=6>';

echo '&nbsp';

echo '</td>';

echo '</tr>';

 

echo '<tr>';

echo '<td colspan=6>';

echo '<strong>';

echo $aktsign;

echo '</strong>';

echo '</td>';

echo '</tr>';

 

$sign=$aktsign;

}

 

echo '<tr>';

 

echo '<td width=150>' . $ergebnis[$i]['displayname'] . '</td>';

 

 

if (empty($ergebnis[$i]['lastlogon']))

echo '<td width=150> </td>';

else /*Breite vom Feld*/

echo '<td width=150>' . $ergebnis[$i]['lastlogon'] . '</td>';

 

'</tr>';

}

}

 

kann ich es hier auch direkt irgendwie umwandeln und dann ausgeben...??

 

Danke, danke, danke... :D

Link zu diesem Kommentar

Moin,

 

naja ... ich kenne mich dafür mit PHP nicht aus. :)

VBScript kennt für Arrays Funktionen, um die Werte in einen einzigen String zusammenzufassen, das macht die Ausgabe manchmal einfacher.

 

Für die komplexeren Werte: Josés Code ist mittlerweile sehr unübersichtlich. Aber wenn du ein wenig suchst, kommst du vielleicht hinter die Funktionen, die die Datumswerte usw. umrechnen. Grundsätzlich sollte das dann verstehbar und in PHP umsetzbar sein - aber tiefere PHP-Kenntnisse braucht man da schon.

 

Gruß, Nils

Link zu diesem Kommentar

Moin,

 

ja hab rausgefunden was die zahl zu bedeuten hat aber es ist die zeit von 1970 00:00:00 bis jetzt...

 

das wäre Unix-like. Sicher, dass es nicht der Wert von Carsten ist?

 

Last-Logon Attribute

The last time the user logged on. This value is stored as a large integer that represents the number of 100 nanosecond intervals since January 1, 1601 (UTC). A value of zero means that the last logon time is unknown.

 

Last-Logon Attribute (Windows)

 

das problem ist anzeigen lasse als datum, bekomme ich daten in der zukunft und zwar zum teil sehr weit in der zukunft :) bin am schauen wie ich das löse...

 

Naja, der Wert liegt halt knapp 400 Jahre früher als deine Annahme ...

 

Gruß, Nils

Link zu diesem Kommentar

Moin,

 

hier der Algorithmus in VBScript:

Set objUser = GetObject("LDAP://cn=Ken Myer, ou=Finance, dc=fabrikam, dc=com")
Set objLastLogon = objUser.Get("lastLogonTimestamp")

intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart 
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440

Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601#

 

Beschrieben wird das hier:

Dandelions, VCR Clocks, and Last Logon Times: These are a Few of Our Least Favorite Things

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...