Nedanstående funkar sådär. Profiles.Kroppen och Profiles.Stevan har en ny version.

Shell script

 #!/bin/sh

ldapsearch -Q '(cn=pr_ch_tkdat)' member | grep $1 > /dev/null
if [ $? -eq 1 ] ; then
  ldapsearch -Q '(cn=pr_ch_tdata)' member | grep $1 > /dev/null
  if [ $? -eq 1 ] ; then
    echo "0"
    exit
  fi
fi

echo "1";

Ett försök till ett användarvänligt LDAP-skript finns på search-ldap.sh, skriptet skrevs av Profiles.Jassob.

Om man vill ha ut cids på folk som pluggar data kan man kolla på vilka som var registrerade på kursen TDA555, som är introduktion i funktionell programmering, vilket nästan bara Data tar. För att plocka ut alla som var registrerade på TDA555 från 2013-2017 med skriptet ovan skriver man:

$ search-ldap.sh --trim cn=s_pingpong_kursstudent_chalmers_tda555_h13 \
cn=s_pingpong_kursstudent_chalmers_tda555_h14 \
cn=s_pingpong_kursstudent_chalmers_tda555_h15 \
cn=s_pingpong_kursstudent_chalmers_tda555_h16 \
cn=s_pingpong_kursstudent_chalmers_tda555_h17

(--trim plockar bort all annan output förutom memberUid, vilket är samma som användarnas cids).

Värt att påpeka är att skriptet måste köras på en StuDAT-dator om man inte vill konfigurera Kerberos.

PHP

Ett php-skript finns tillgängligt på dtek.se/ldaptest.php om man vill veta vad man kan filtrera på.

<?php
function check_group($uid) {
if (!exec("ldapsearch -Q '(cn=pr_ch_tkdat)' member | grep $uid"))
  if (!exec("ldapsearch -Q '(cn=pr_ch_tdata)' member | grep $uid"))
    return 0;

return 1;
}

echo check_group('uid');

?>
<?php

function is_dtekare($user) {
    $ds = ldap_connect("ldap://ldap.chalmers.se");
    if ($ds) {
        $filter = "(&(member=uid=$user,ou=people,dc=chalmers,dc=se)"
                . "(|(cn=pr_ch_tkdat)(cn=pr_ch_tdata)))";
        $sr = ldap_search($ds, "dc=chalmers,dc=se", $filter);
        $info = ldap_get_entries($ds, $sr);
        ldap_close($ds);
        return $info["count"];
    }
}

Kategorier: Systemet