ajout de defval aux commande de transformation de ldif
This commit is contained in:
parent
3b9c9f7ec8
commit
f724bffe82
@ -1 +1 @@
|
|||||||
007018000
|
007019000
|
||||||
|
148
lib/ulib/ldif
148
lib/ulib/ldif
@ -457,6 +457,51 @@ END {
|
|||||||
awk "$script"
|
awk "$script"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function tl_defval() {
|
||||||
|
local attr="$1"; shift
|
||||||
|
local script="$(def_match_attr "$attr")
|
||||||
|
function resetp() {
|
||||||
|
add = 0
|
||||||
|
found = 0
|
||||||
|
}
|
||||||
|
function print_values() {
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
print attr \" \" values[i]
|
||||||
|
}
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
|
BEGIN {
|
||||||
|
add = 0
|
||||||
|
found = 0
|
||||||
|
attr = fix_attr($(quoted_awk "$attr"))
|
||||||
|
count = $#"
|
||||||
|
local i value
|
||||||
|
let i=0
|
||||||
|
for value in "$@"; do
|
||||||
|
script="$script
|
||||||
|
values[$i] = $(quoted_awk "$value")"
|
||||||
|
let i=$i+1
|
||||||
|
done
|
||||||
|
script="$script
|
||||||
|
}"'
|
||||||
|
/^dn:/ {
|
||||||
|
add = 1
|
||||||
|
}
|
||||||
|
add && match_attr($1) {
|
||||||
|
found = 1
|
||||||
|
}
|
||||||
|
add && $0 == "" {
|
||||||
|
if (!found) print_values()
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
|
{ print }
|
||||||
|
END {
|
||||||
|
if (add && !found) print_values()
|
||||||
|
}
|
||||||
|
'
|
||||||
|
awk "$script"
|
||||||
|
}
|
||||||
|
|
||||||
function tl_decode() {
|
function tl_decode() {
|
||||||
local match_attr="$1"
|
local match_attr="$1"
|
||||||
awkrun -f "$match_attr"'
|
awkrun -f "$match_attr"'
|
||||||
@ -853,45 +898,48 @@ u, uncut
|
|||||||
c, cut
|
c, cut
|
||||||
Couper les lignes trop longues. Il n'est pas conseillé d'appliquer des
|
Couper les lignes trop longues. Il n'est pas conseillé d'appliquer des
|
||||||
méthodes de transformation après avoir utilisé cette action.
|
méthodes de transformation après avoir utilisé cette action.
|
||||||
dec, decode [attrs...]
|
dec, decode [ATTRS...]
|
||||||
Décoder les valeurs des attributs mentionnés si nécessaire (c'est à dire
|
Décoder les valeurs des attributs mentionnés si nécessaire (c'est à dire
|
||||||
s'ils sont encodés en base64)
|
s'ils sont encodés en base64)
|
||||||
enc, encode [attrs...]
|
enc, encode [ATTRS...]
|
||||||
Encoder en base64 les valeurs des attributs mentionnés.
|
Encoder en base64 les valeurs des attributs mentionnés.
|
||||||
k, keepattr attrs...
|
k, keepattr ATTRS...
|
||||||
Garder uniquement les lignes des attributs mentionnés. Ensuite, supprimer
|
Garder uniquement les lignes des attributs mentionnés. Ensuite, supprimer
|
||||||
les objets ayant uniquement la ligne dn: (en d'autres termes, keepattr sans
|
les objets ayant uniquement la ligne dn: (en d'autres termes, keepattr sans
|
||||||
argument supprime *tout* le flux)
|
argument supprime *tout* le flux)
|
||||||
kv, keepval attr patterns...
|
kv, keepval ATTR PATTERNS...
|
||||||
Pour l'attribut attr, garder uniquement les lignes pour lesquelles les
|
Pour l'attribut attr, garder uniquement les lignes pour lesquelles les
|
||||||
valeurs correspondent aux expressions régulières. Les autres attributs ne
|
valeurs correspondent aux expressions régulières. Les autres attributs ne
|
||||||
sont pas modifiés. Ensuite, supprimer les objets ayant uniquement la ligne
|
sont pas modifiés. Ensuite, supprimer les objets ayant uniquement la ligne
|
||||||
dn:
|
dn:
|
||||||
x, excludeattr attrs...
|
x, excludeattr ATTRS...
|
||||||
Supprimer les lignes des attributs mentionnés. Ensuite, supprimer les objets
|
Supprimer les lignes des attributs mentionnés. Ensuite, supprimer les objets
|
||||||
ayant uniquement la ligne dn:
|
ayant uniquement la ligne dn:
|
||||||
xv, excludeval attr patterns...
|
xv, excludeval ATTR PATTERNS...
|
||||||
Pour l'attribut attr, supprimer les lignes pour lesquelles les valeurs
|
Pour l'attribut attr, supprimer les lignes pour lesquelles les valeurs
|
||||||
correspondent aux expressions régulières. Les autres attributs ne sont pas
|
correspondent aux expressions régulières. Les autres attributs ne sont pas
|
||||||
modifiés. Ensuite, supprimer les objets ayant uniquement la ligne dn:
|
modifiés. Ensuite, supprimer les objets ayant uniquement la ligne dn:
|
||||||
kve, keepvalentry attr patterns...
|
kve, keepvalentry ATTR PATTERNS...
|
||||||
Pour l'attribut attr, vérifier si *au moins une* valeur correspond à l'une
|
Pour l'attribut attr, vérifier si *au moins une* valeur correspond à l'une
|
||||||
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
||||||
supprimer toute l'entrée.
|
supprimer toute l'entrée.
|
||||||
xve, excludevalentry attr patterns...
|
xve, excludevalentry ATTR PATTERNS...
|
||||||
Pour l'attribut attr, vérifier si *aucune* des valeurs ne correspond à l'une
|
Pour l'attribut attr, vérifier si *aucune* des valeurs ne correspond à l'une
|
||||||
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
||||||
supprimer toute l'entrée.
|
supprimer toute l'entrée.
|
||||||
rv, replval attr values...
|
rv, replval ATTR VALUES...
|
||||||
Remplacer toutes les valeurs de l'attribut attr par les valeurs spécifiées.
|
Remplacer toutes les valeurs de l'attribut attr par les valeurs spécifiées.
|
||||||
av, addval attr values...
|
av, addval ATTR VALUES...
|
||||||
Ajouter un nouvel attribut avec les valeurs spécifiées. Si l'attribut existe
|
Ajouter un nouvel attribut avec les valeurs spécifiées. Si l'attribut existe
|
||||||
déjà, les nouvelles valeurs sont ajoutées à la fin.
|
déjà, les nouvelles valeurs sont ajoutées à la fin.
|
||||||
sed args
|
dv, defval ATTR VALUES...
|
||||||
awk args
|
Ajouter un nouvel attribut avec les valeurs spécifiées, s'il n'existe pas
|
||||||
grep args
|
déjà. Si l'attribut existe déjà, cette opération est un NOP.
|
||||||
sort [args]
|
sed ARGS
|
||||||
awkrun [args]
|
awk ARGS
|
||||||
|
grep ARGS
|
||||||
|
sort [ARGS]
|
||||||
|
awkrun [ARGS]
|
||||||
Traiter le flux avec respectivement les commandes sed, awk, grep, sort et
|
Traiter le flux avec respectivement les commandes sed, awk, grep, sort et
|
||||||
awkrun. awkrun est la version 'améliorée' de awk offerte par nutools.
|
awkrun. awkrun est la version 'améliorée' de awk offerte par nutools.
|
||||||
Note: ces commandes ne tiennent pas compte de la locale: elles sont lancées
|
Note: ces commandes ne tiennent pas compte de la locale: elles sont lancées
|
||||||
@ -899,7 +947,7 @@ awkrun [args]
|
|||||||
Note: aucun argument n'est filtré, mais il ne faudrait pas utiliser les
|
Note: aucun argument n'est filtré, mais il ne faudrait pas utiliser les
|
||||||
options qui provoquent la modification en place d'un fichier, comme par
|
options qui provoquent la modification en place d'un fichier, comme par
|
||||||
exemple l'option -i de sed
|
exemple l'option -i de sed
|
||||||
format [options] attrs...
|
format [OPTIONS] ATTRS...
|
||||||
Formater le flux au format ldif en données tabulaires.
|
Formater le flux au format ldif en données tabulaires.
|
||||||
Chaque attribut peut être de la forme newname:oldname pour avoir des
|
Chaque attribut peut être de la forme newname:oldname pour avoir des
|
||||||
en-têtes avec un nom différent des noms des attributs. L'effet est le même
|
en-têtes avec un nom différent des noms des attributs. L'effet est le même
|
||||||
@ -951,7 +999,7 @@ format [options] attrs...
|
|||||||
--ec
|
--ec
|
||||||
Dans le mode -e, spécifier une commande à insérer après le dernier
|
Dans le mode -e, spécifier une commande à insérer après le dernier
|
||||||
enregistrement
|
enregistrement
|
||||||
formatcsv [options] attrs...
|
formatcsv [OPTIONS] ATTRS...
|
||||||
Equivalent à 'format -F , --show-headers --quote \\\"'
|
Equivalent à 'format -F , --show-headers --quote \\\"'
|
||||||
-n, --no-headers
|
-n, --no-headers
|
||||||
Ne pas afficher les en-têtes. Par défaut, les en-têtes sont affichés.
|
Ne pas afficher les en-têtes. Par défaut, les en-têtes sont affichés.
|
||||||
@ -959,16 +1007,16 @@ formatcsv [options] attrs...
|
|||||||
--quote QUOTE
|
--quote QUOTE
|
||||||
--escape ESCAPE
|
--escape ESCAPE
|
||||||
Ces options ont la même signification que pour format
|
Ces options ont la même signification que pour format
|
||||||
parsecsv [options] basedn [attrs...]
|
parsecsv [OPTIONS] BASEDN [ATTRS...]
|
||||||
Analyser le flux au format CSV (qui a par exemple été générée avec la
|
Analyser le flux au format CSV (qui a par exemple été générée avec la
|
||||||
commande formatcsv), et reconstruire les objets LDAP associés.
|
commande formatcsv), et reconstruire les objets LDAP associés.
|
||||||
|
|
||||||
En principe, basedn n'est pas vide, et l'option -u détermine l'attribut dont
|
En principe, BASEDN n'est pas vide, et l'option -u détermine l'attribut dont
|
||||||
la valeur est utilisée pour nommer les objets. Le cas particulier basedn==''
|
la valeur est utilisée pour nommer les objets. Le cas particulier BASEDN==''
|
||||||
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
||||||
'uid' mais 'dn'
|
'uid' mais 'dn'
|
||||||
|
|
||||||
basedn
|
BASEDN
|
||||||
DN de base des objets à construire
|
DN de base des objets à construire
|
||||||
-u, --rdnattr rdnattr[=uid]
|
-u, --rdnattr rdnattr[=uid]
|
||||||
Nommer les objets avec la valeur de l'attribut spécifié
|
Nommer les objets avec la valeur de l'attribut spécifié
|
||||||
@ -981,20 +1029,20 @@ parsecsv [options] basedn [attrs...]
|
|||||||
-R VSEP
|
-R VSEP
|
||||||
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
||||||
s'agit du point-virgule ';'
|
s'agit du point-virgule ';'
|
||||||
parsecsvmod [options] basedn [attrs...]
|
parsecsvmod [OPTIONS] BASEDN [ATTRS...]
|
||||||
Analyser le flux au format CSV qui contient des ordres de modification des
|
Analyser le flux au format CSV qui contient des ordres de modification des
|
||||||
objets LDAP, et construire les modifications au format LDIF.
|
objets LDAP, et construire les modifications au format LDIF.
|
||||||
L'attribut rdnattr est le seul dont la valeur doit être au format standard.
|
L'attribut rdnattr (spécifié avec l'option -u) est le seul dont la valeur
|
||||||
Les valeurs des autres attributs doivent être de la forme [CHANGETYPE:]value
|
doit être au format standard. Les valeurs des autres attributs doivent être
|
||||||
où CHANGETYPE peut valoir replace (par défaut), add, delete. Si une valeur
|
de la forme [CHANGETYPE:]value où CHANGETYPE peut valoir replace, add, ou
|
||||||
est vide, elle est ignorée
|
delete. CHANGETYPE vaut replace par défaut. Si une valeur est vide, elle est
|
||||||
|
ignorée
|
||||||
En principe, basedn n'est pas vide, et l'option -u détermine l'attribut dont
|
En principe, BASEDN n'est pas vide, et l'option -u détermine l'attribut dont
|
||||||
la valeur est utilisée pour nommer les objets. Le cas particulier basedn==''
|
la valeur est utilisée pour nommer les objets. Le cas particulier basedn==''
|
||||||
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
||||||
'uid' mais 'dn'
|
'uid' mais 'dn'
|
||||||
|
|
||||||
basedn
|
BASEDN
|
||||||
DN de base des objets à construire
|
DN de base des objets à construire
|
||||||
-u, --rdnattr rdnattr[=uid]
|
-u, --rdnattr rdnattr[=uid]
|
||||||
Nommer les objets avec la valeur de l'attribut spécifié
|
Nommer les objets avec la valeur de l'attribut spécifié
|
||||||
@ -1007,35 +1055,35 @@ parsecsvmod [options] basedn [attrs...]
|
|||||||
-R VSEP
|
-R VSEP
|
||||||
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
||||||
s'agit du point-virgule ';'
|
s'agit du point-virgule ';'
|
||||||
awkcsv [options] [attrs...]
|
awkcsv [OPTIONS] [ATTRS...]
|
||||||
$(sed 's/^/ /g' <<<"$__AWKCSV_HELP")
|
$(sed 's/^/ /g' <<<"$__AWKCSV_HELP")
|
||||||
mergecsv [options] left right -k field
|
mergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||||
$(sed 's/^/ /g' <<<"$__MERGECSV_HELP")
|
$(sed 's/^/ /g' <<<"$__MERGECSV_HELP")
|
||||||
sortcsv [options] input -k field
|
sortcsv [OPTIONS] INPUT -k FIELD
|
||||||
$(sed 's/^/ /g' <<<"$__SORTCSV_HELP")
|
$(sed 's/^/ /g' <<<"$__SORTCSV_HELP")
|
||||||
|
|
||||||
lsed args
|
lsed ARGS
|
||||||
lawk args
|
lawk ARGS
|
||||||
lgrep args
|
lgrep ARGS
|
||||||
lsort [args]
|
lsort [ARGS]
|
||||||
lawkrun [args]
|
lawkrun [ARGS]
|
||||||
lawkcsv [options] [attrs...]
|
lawkcsv [OPTIONS] [ATTRS...]
|
||||||
lmergecsv [options] left right -k field
|
lmergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||||
lsortcsv [options] input -k field
|
lsortcsv [OPTIONS] INPUT -k FIELD
|
||||||
Ces commandes sont comme les commandes sans le préfixe 'l', mais elles sont
|
Ces commandes sont comme les commandes sans le préfixe 'l', mais elles sont
|
||||||
lancées sans LANG=C, ce qui fait qu'elle tiennent compte de la locale.
|
lancées sans LANG=C, ce qui fait qu'elle tiennent compte de la locale.
|
||||||
En effet, les outils de coreutils utilisent les règles de la locale pour le
|
En effet, les outils de coreutils utilisent les règles de la locale pour le
|
||||||
tri et la comparaison des chaines, et par exemple, avec LANG=fr_FR.UTF-8, la
|
tri et la comparaison des chaines, et par exemple, avec LANG=fr_FR.UTF-8, la
|
||||||
locale indique que les ponctuations doivent être ignorées pour le tri, ce
|
locale indique que les ponctuations doivent être ignorées pour le tri, ce
|
||||||
qui peut poser problème.
|
qui peut poser problème.
|
||||||
csed args
|
csed ARGS
|
||||||
cawk args
|
cawk ARGS
|
||||||
cgrep args
|
cgrep ARGS
|
||||||
csort [args]
|
csort [ARGS]
|
||||||
cawkrun [args]
|
cawkrun [ARGS]
|
||||||
cawkcsv [options] [attrs...]
|
cawkcsv [OPTIONS] [ATTRS...]
|
||||||
cmergecsv [options] left right -k field
|
cmergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||||
csortcsv [options] input -k field
|
csortcsv [OPTIONS] INPUT -k FIELD
|
||||||
Ces commandes existent pour compatibilité. Ces commandes sont des aliases
|
Ces commandes existent pour compatibilité. Ces commandes sont des aliases
|
||||||
des commandes sans le préfixe 'c', et existent pour insister sur le fait
|
des commandes sans le préfixe 'c', et existent pour insister sur le fait
|
||||||
qu'elles sont lancées avec LANG=C.
|
qu'elles sont lancées avec LANG=C.
|
||||||
@ -1149,6 +1197,10 @@ function get_transform_cmd() {
|
|||||||
cmdparts=(tl_addval "$@")
|
cmdparts=(tl_addval "$@")
|
||||||
xempty=1
|
xempty=1
|
||||||
;;
|
;;
|
||||||
|
dv|defval)
|
||||||
|
cmdparts=(tl_defval "$@")
|
||||||
|
xempty=1
|
||||||
|
;;
|
||||||
xe|xempty|excludeempty) cmdparts=(ensure_complete_objects);;
|
xe|xempty|excludeempty) cmdparts=(ensure_complete_objects);;
|
||||||
sed|awk|grep|sort) cmdparts=(LANG=C "$cmd" "$@");;
|
sed|awk|grep|sort) cmdparts=(LANG=C "$cmd" "$@");;
|
||||||
csed|cawk|cgrep|csort) cmdparts=(LANG=C "${cmd#c}" "$@");;
|
csed|cawk|cgrep|csort) cmdparts=(LANG=C "${cmd#c}" "$@");;
|
||||||
|
Loading…
Reference in New Issue
Block a user