ufile: copier en local sans utiliser scp si possible

This commit is contained in:
Jephté Clain 2017-04-22 10:22:18 +04:00
parent dec100b23b
commit 8c22012d13
1 changed files with 16 additions and 2 deletions

18
ufile
View File

@ -26,6 +26,10 @@ forme pattern:destdir[:renamef]
sur l'hôte spécifié vers la destination spécifiée, sauf si l'hôte courant est
déjà celui mentionné dans la valeur, auquel cas la copie est faite directement
dans le répertoire spécifié.
Si le user et l'hôte courant sont déjà à la valeur spécifiée, alors la copie
est faite en local sans utiliser scp. Cependant, path est alors le chemin
complet vers le fichier destination. Si on veut copier le fichier sans le
renommer vers un répertoire, il faut mettre un slash e.g user@host:destdir/
variables non documentées: interaction(=-i)
USAGE
@ -156,13 +160,22 @@ for file in "$@"; do
userhost=
destname="$filename"
interaction=-i
interaction=--DEFAULT--
if [ -n "$renamef" ]; then
dest=
"$renamef" "$filename" "$pf" "$destdir" || continue
if [ -n "$dest" ]; then
if [[ "$dest" == *:* ]]; then
splitpair "$dest" userhost destdir
splitpair "$dest" userhost remotedir
if check_userhostname "$userhost"; then
# on est déjà avec le bon user sur le bon hôte
userhost=
if [ -n "$remotedir" ]; then
[ "$interaction" == --DEFAULT-- ] && interaction=
splitpath "$remotedir" destdir destname
[ -n "$destname" ] || destname="$filename"
fi
fi
elif [[ "$dest" == */* ]]; then
setx dest=abspath "$dest"
setx destdir=dirname -- "$dest"
@ -172,6 +185,7 @@ for file in "$@"; do
fi
fi
fi
[ "$interaction" == --DEFAULT-- ] && interaction=-i
if [ -z "$userhost" -a -z "$destdir" ]; then
eerror "$rule: règle invalide: destdir est vide"