ldap_search aus SSH Befehl

Webmensch

Grünschnabel
Hey Leute,
ich will Emailadressen aus einer Active Directory lesen. Allerdings kenne ich mich mit sowas ünerhaupt nicht aus. Ich habe es geschafft mich mit dieser zu Verbinden. Jetzt bräuchte ich einen ldab_search, allerdings weiß ich nicht wie ich das machen soll.

Die Doku habe ich gelesen, allerdings werde ich daraus nicht schlau.

Ein SSH-Befehl zum Ausführen in Putty habe ich, den müsste man "umwandeln"

Befehel:

Code:
ldapsearch -x -h k1dc1 -D "CN=ldapuser,CN=Users,DC=kapp-niles,DC=local" -W -b "CN=Microsoft Exchange System Objects,DC=KAPP-NILES,DC=LOCAL" cn=Z-ITE cn mail displayNamePrintable

Bisheriger PHP-Code:

PHP:
<?php
error_reporting(E_ALL);

// verwenden von ldap bind
$ldaprdn  = 'ldapuser';     // ldap rdn oder dn
$ldappass = '********';  // entsprechendes password

// verbinden zum ldap server
$ldapconn = ldap_connect("k1dc1.kapp-niles.local")
    or die("Keine Verbindung zum LDAP server möglich.");

if ($ldapconn) {

    // binden zum ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // Bindung überpfrüfen
    if ($ldapbind) {
        echo "LDAP bind erfolgreich...";
    } else {
        echo "LDAP bind fehlgeschlagen...";
    }

}

$sr = ldap_search($ldapconn, "dc=k1dc1,dc=kapp-niles,dc=local", $ldaprdn);
$info = ldap_get_entries($ldapconn, $sr);


?>

Ich hoffe ihr könnt mir helfen ...

EDIT:

Ich bekomme mittlerweile als Suchergebnis Resource id #3 und er gibt mir das Ergebnis aus, aber das Ergebnis ist Array.
Was heißt das?

PHP:
<?php
error_reporting(E_ALL);

// verwenden von ldap bind
$ldaprdn  = 'ldapuser';     // ldap rdn oder dn
$ldappass = 'Ldap1234';  // entsprechendes password

// verbinden zum ldap server
$ldapconn = ldap_connect("k1dc1.kapp-niles.local")
    or die("Keine Verbindung zum LDAP server möglich.");

if ($ldapconn) {

    // binden zum ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // Bindung überpfrüfen
    if ($ldapbind) {
        echo "LDAP bind erfolgreich...";
    } else {
        echo "LDAP bind fehlgeschlagen...";
    }

}

$sr = ldap_search($ldapconn,  "CN=Microsoft Exchange System Objects,DC=KAPP-NILES,DC=LOCAL", "cn=Z-ITE cn mail displayNamePrintable");
echo "Search result is " . $sr . "<br />";

$info = ldap_get_entries($ldapconn, $sr);
echo $info;


?>
/php]
 
Zuletzt bearbeitet:
Hi,

laut Doku der ldap_search() liefert diese eine Resource zurück.
In der der Doku wird auch ein Beispiel gezeigt, wie du da die Attribute abrufen kannst:
PHP:
$info = ldap_get_entries($ds, $sr);

Und in diesem Kommentar wird auch beschrieben, wie du aus der $info dann an die Werte rankommst:
klick

Grüsse,
BK

// edit: Wenn du komplexere Sachen wie Arrays oder Objekte zum Debuggen ausgeben willst, dann hilft dir hier "echo" nicht viel weiter. Versuchs stattdessen mal mit "var_dump()".
 
Zuletzt bearbeitet:
Das Problem habe ich gelöst, ich bekomme die Daten jetzt.

Allerdings habe ich ein neues, wenn ich die Daten ausgeben lassen will funktioniert alles, außer das eine Angabe nicht ausgegeben wird.

PHP:
<?php
error_reporting(-1);

// verwenden von ldap bind
$ldaprdn  = 'ldapuser';     // ldap rdn oder dn
$ldappass = '*****';  // entsprechendes password

// verbinden zum ldap server
$ldapconn = ldap_connect("k1dc1.kapp-niles.local")
    or die("Keine Verbindung zum LDAP server möglich.");

if ($ldapconn) {

    // binden zum ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // Bindung überpfrüfen
    #if ($ldapbind) {
    #    echo "LDAP bind erfolgreich...";
    #} else {
    #    echo "LDAP bind fehlgeschlagen...";
    #}

}

$sr1=ldap_search($ldapconn, "CN=Microsoft Exchange System Objects,DC=KAPP-NILES,DC=LOCAL", "(&(objectclass=publicFolder)(cn=Z-*))" );
    $info1 = ldap_get_entries($ldapconn, $sr1);
    ?>
<html>
<head>
</head>
<body>
    <form method="POST" action ="test.php">
        <table>
            <?php
            echo '<table border="1">';
            for ($i=0; $i<$info1["count"]; $i++) {
                echo '<tr>';
                echo '<td>';
                ?>
                <input type="checkbox" name="email[]" value="<?php echo $info1[$i]["m"][0] ?>"><?php echo $info1[$i]["displayNamePrintable"][0] ?>
                <?php
                echo '</td>';
                echo '</tr>';
                    }
            echo '</table>';
            ldap_close($ldapconn);
            ?>
        </table>
        <input type="submit">
    </form>
</body>
</html>

Alles wird ausgegeben außer displayNamePrintable
Wenn ich aber mit Putty in die Active Directory schaue gibt es dort Einträge dazu ..
 
Hi,

hast du dir schon über die dreifach-verschachtelte Schleife alles ausgeben lassen? Ist da das Feld auch nicht dabei?

Es könnte auch an einer ACL (Zugriffsbeschränkung) auf Host-Basis liegen. Läuft das PHP-Script auf einer anderen Maschine als das "ldapsearch" per SSH?

Grüsse,
BK
 
Zurück