#!/bin/bash function dn_to_path() { FN="" echo $1 | sed -e 's/,dc=labammsis//' | sed -e 's/fn=//g' | sed -e 's/,/\n/g' | ( while read a do FN="$a/$FN" done echo /$FN | sed -e 's/\/$//' ) } ldapsearch -x -s sub -b "dc=labammsis" "(|(objectClass=dir)(objectClass=file))" | grep "^dn: " | cut -c5- | rev | sort -r | rev | while read name ; do # il dn è nella forma fn=filename,fn=to,fn=path,dc=labammsis # che rappresenta /path/to/filename # l'ordinamento rev / sort -r / rev garantisce che path lunghi # vengano prima di path corti # --> # nel caso rimuovo i nodi figli prima dei padri FILE=$(dn_to_path $name) test -e "$FILE" || echo "$name" # il ciclo emette i DN da eliminare # un'unica connessione autenticata al server li elimina done | ldapdelete -D "cn=admin,dc=labammsis" -w "admin" -x