supporter basedn=='' et rdnattr=='dn'
This commit is contained in:
parent
b750422b94
commit
e0220c0877
86
ulib/ldif
86
ulib/ldif
|
@ -686,7 +686,7 @@ function tl_formatcsv() {
|
|||
|
||||
function tl_parsecsv() {
|
||||
local -a args headers
|
||||
local basedn= rdnattr=uid skip_lines=0 parse_headers= vsep=';'
|
||||
local basedn= rdnattr= skip_lines=0 parse_headers= vsep=';'
|
||||
if parse_opts \
|
||||
-u:,--rdnattr: rdnattr= \
|
||||
-s:,--skip-lines: skip_lines= \
|
||||
|
@ -699,6 +699,11 @@ function tl_parsecsv() {
|
|||
return 1
|
||||
fi
|
||||
basedn="$1"; shift
|
||||
if [ -n "$basedn" ]; then
|
||||
[ -n "$rdnattr" ] || rdnattr=uid
|
||||
else
|
||||
[ -n "$rdnattr" ] || rdnattr=dn
|
||||
fi
|
||||
[ -n "$*" ] && headers=("$@")
|
||||
[ -n "${headers[*]}" ] || parse_headers=1
|
||||
|
||||
|
@ -717,12 +722,19 @@ parse_headers {
|
|||
array_parsecsv(attrs, $0)
|
||||
rdnindex = key_index(rdnattr, headers)
|
||||
rdnvalue = attrs[rdnindex]
|
||||
print "dn: " rdnattr "=" rdnvalue "," basedn
|
||||
if (basedn != "") {
|
||||
print "dn: " rdnattr "=" rdnvalue "," basedn
|
||||
} else {
|
||||
print "dn: " rdnvalue
|
||||
}
|
||||
nbheaders = length(headers)
|
||||
for (i = 1; i <= nbheaders; i++) {
|
||||
attr = attrs[i]
|
||||
split(attr, values, vsep)
|
||||
attr = headers[i]
|
||||
if (basedn == "" && attr == rdnattr) {
|
||||
continue # ne pas écrire deux fois le même attribut
|
||||
}
|
||||
for (j = 1; j <= length(values); j++) {
|
||||
print attr ": " values[j]
|
||||
}
|
||||
|
@ -734,7 +746,7 @@ parse_headers {
|
|||
|
||||
function tl_parsecsvmod() {
|
||||
local -a args headers
|
||||
local basedn= rdnattr=uid skip_lines=0 parse_headers= vsep=';'
|
||||
local basedn= rdnattr= skip_lines=0 parse_headers= vsep=';'
|
||||
if parse_opts \
|
||||
-u:,--rdnattr: rdnattr= \
|
||||
-s:,--skip-lines: skip_lines= \
|
||||
|
@ -747,6 +759,11 @@ function tl_parsecsvmod() {
|
|||
return 1
|
||||
fi
|
||||
basedn="$1"; shift
|
||||
if [ -n "$basedn" ]; then
|
||||
[ -n "$rdnattr" ] || rdnattr=uid
|
||||
else
|
||||
[ -n "$rdnattr" ] || rdnattr=dn
|
||||
fi
|
||||
[ -n "$*" ] && headers=("$@")
|
||||
[ -n "${headers[*]}" ] || parse_headers=1
|
||||
|
||||
|
@ -765,33 +782,48 @@ parse_headers {
|
|||
array_parsecsv(attrvalues, $0)
|
||||
rdnindex = key_index(rdnattr, headers)
|
||||
rdnvalue = attrvalues[rdnindex]
|
||||
printdn = 1
|
||||
nbheaders = length(headers)
|
||||
# déterminer d"abord s"il faut écrire l"objet
|
||||
printobj = 0
|
||||
for (i = 1; i <= nbheaders; i++) {
|
||||
attr = headers[i]
|
||||
if (attr == rdnattr) continue
|
||||
attrvalue = attrvalues[i]
|
||||
if (attrvalue == "") {
|
||||
continue
|
||||
} else if (attrvalue ~ /^(replace|add|delete):/) {
|
||||
changetype = attrvalue
|
||||
sub(/:.*/, "", changetype)
|
||||
attrvalue = substr(attrvalue, length(changetype) + 2)
|
||||
if (attrvalue == "") continue
|
||||
# ok on doit ecrire le dn
|
||||
if (basedn != "") {
|
||||
print "dn: " rdnattr "=" rdnvalue "," basedn
|
||||
} else {
|
||||
changetype = "replace"
|
||||
print "dn: " rdnvalue
|
||||
}
|
||||
if (printdn) {
|
||||
print "dn: " rdnattr "=" rdnvalue "," basedn "\nchangetype: modify"
|
||||
printdn = 0
|
||||
}
|
||||
print changetype ": " attr
|
||||
split(attrvalue, values, vsep)
|
||||
for (j = 1; j <= length(values); j++) {
|
||||
print attr ": " values[j]
|
||||
}
|
||||
print "-"
|
||||
print "changetype: modify"
|
||||
printobj = 1
|
||||
break
|
||||
}
|
||||
# maintenant, écrire l"objet le cas échéant
|
||||
if (printobj) {
|
||||
for (i = 1; i <= nbheaders; i++) {
|
||||
attr = headers[i]
|
||||
if (attr == rdnattr) continue
|
||||
attrvalue = attrvalues[i]
|
||||
if (attrvalue == "") {
|
||||
continue
|
||||
} else if (attrvalue ~ /^(replace|add|delete):/) {
|
||||
changetype = attrvalue
|
||||
sub(/:.*/, "", changetype)
|
||||
attrvalue = substr(attrvalue, length(changetype) + 2)
|
||||
} else {
|
||||
changetype = "replace"
|
||||
}
|
||||
print changetype ": " attr
|
||||
split(attrvalue, values, vsep)
|
||||
for (j = 1; j <= length(values); j++) {
|
||||
print attr ": " values[j]
|
||||
}
|
||||
print "-"
|
||||
}
|
||||
print ""
|
||||
}
|
||||
if (!printdn) print ""
|
||||
}
|
||||
'
|
||||
}
|
||||
|
@ -913,6 +945,11 @@ parsecsv [options] basedn [attrs...]
|
|||
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.
|
||||
|
||||
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==''
|
||||
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
||||
'uid' mais 'dn'
|
||||
|
||||
basedn
|
||||
DN de base des objets à construire
|
||||
-u, --rdnattr rdnattr[=uid]
|
||||
|
@ -934,6 +971,11 @@ parsecsvmod [options] basedn [attrs...]
|
|||
où CHANGETYPE peut valoir replace (par défaut), add, delete. 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
|
||||
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
|
||||
'uid' mais 'dn'
|
||||
|
||||
basedn
|
||||
DN de base des objets à construire
|
||||
-u, --rdnattr rdnattr[=uid]
|
||||
|
|
Loading…
Reference in New Issue