ldapsearch e count entries

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

ldapsearch e count entries

Messaggio da ZeroUno »

Eseguo delle query ldap con ldapsearch e ho bisogno che in output mi venga mostrato il numero di risultati anzichè tutto l'output.

Solitamente faccio

ldapsearch -x -b "ou=test,dc=it" "uid=*" dn|grep ^dn|wc -l


ma questo presuppone che il server restituisca tutto l'output (che può essere bello grosso in caso di milioni di entries), il che rallenta.

E' possibile dire al server di restituire solamente il numero di entries?

ldapsearch -x -b "dc=it" -s one "ou=test" numsubordinates
qualche volta aiuta, ma in caso di query particolari tipo uid=xxx* non è utile.

mi sembra che ldapsearch di opends abbia l'opzione --countentries ma io ho a disposizione:
389-ds, openldap, sunds
e mi sembra che nessuno dei tre abbia tale opzione e non ne ho trovate di similari.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: ldapsearch e count entries

Messaggio da masalapianta »

se usi openldap ti serve l'overlay noopsrch, non so se esiste qualcosa di equivalente per 389-ds e sun directory server

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: ldapsearch e count entries

Messaggio da ZeroUno »

openldap lo uso solamente come client, però comunque non mi aspettavo dover fare una modifica lato server; pensavo che chi ha creato lo standard ldap ci avesse pensato ad inserire questa funzione. O almeno speravo che se non fosse il server a restituire il numero di oggetti, almeno lo potesse fare il client; certo, le prestazioni non sarebbero state le stesse ma comunque mi evitavo la wc.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: ldapsearch e count entries

Messaggio da masalapianta »

ZeroUno ha scritto:openldap lo uso solamente come client, però comunque non mi aspettavo dover fare una modifica lato server; pensavo che chi ha creato lo standard ldap ci avesse pensato ad inserire questa funzione.
un directory server non è un rdbms, il protocollo ldap è pensato per fare poche cose e farle molto velocemente
O almeno speravo che se non fosse il server a restituire il numero di oggetti, almeno lo potesse fare il client; certo, le prestazioni non sarebbero state le stesse ma comunque mi evitavo la wc.
uh? ma ci metti pochissimo a scriverti un client o a modificare i sorgenti di ldapsearch per fare il count delle entries senza stamparti queste ultime; di solito questa funzione non serve perchè, se devi fare dei count su directory medio piccole, ti fai uno slapcat in locale (molto veloce) e poi ti parsi il risultato facendo tutte le statistiche che vuoi; se invece la directory è molto grande, come la metti la metti qualunque operazione di questo tipo è pesantissima e ti ammazza le prestazioni del directory server, quindi è preferibile tenere il conto delle entries in tempo reale utilizzando un attributo apposito ('count' o quel che vuoi) nella entries sotto la quale ci sono tutte le entries di cui vuoi tenere traccia), quindi ogni volta che aggiungi una entry aggiorni l'attributo contatore, idem se ne cancelli una, o utilizzando dei trigger tipo gli overlay di openldap oppure facendo fare al client

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: ldapsearch e count entries

Messaggio da ZeroUno »

Purtroppo il mio ldap ospita 1.5 milioni di utenze per un totale di 10 milioni di entry e oltre 10 GB di spazio occupato tra dati e indici.
Purtroppo non è una mia scelta (all'inizio non sapevo neanche come funzionava un ldap).
Con il tipo di indicizzazioni che ho messo comunque le ricerche vanno abbastanza veloci.

Per il conteggio del totale delle entry in un ramo non ho bisogno di aggiungere contatori, basta il numsubordinates, ma per conoscere quanti sono gli utenti che cominciano per pippo o per pluto non esiste contatore che tenga; solo indicizzare bene, cercare e contare.

Per modificare il sorgente di ldapsearch dovrei studiarmi il codice e considerando che conosco il C ma non ne sono un esperto non mi conviene (anche perchè mi serve una volta al mese; tanto vale usare wc); mi sembrava strano solo che non lo avesse fatto chi ha scritto ldapsearch. Stavo provando ad utilizzare il modulo ldap di php (che conosco meglio) ma poi ho lasciato perdere perchè non conviene.

Alla fine ho filtrato quanto mi serve e buttato in un file opportunamente formattato una entry per riga e sono andato di grep.

Mi riproporrò il problema credo tra qualche mese, quando avrò bisogno di rifare le statistiche.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi