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 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 déjà celui mentionné dans la valeur, auquel cas la copie est faite directement
dans le répertoire spécifié. 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) variables non documentées: interaction(=-i)
USAGE USAGE
@ -156,13 +160,22 @@ for file in "$@"; do
userhost= userhost=
destname="$filename" destname="$filename"
interaction=-i interaction=--DEFAULT--
if [ -n "$renamef" ]; then if [ -n "$renamef" ]; then
dest= dest=
"$renamef" "$filename" "$pf" "$destdir" || continue "$renamef" "$filename" "$pf" "$destdir" || continue
if [ -n "$dest" ]; then if [ -n "$dest" ]; then
if [[ "$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 elif [[ "$dest" == */* ]]; then
setx dest=abspath "$dest" setx dest=abspath "$dest"
setx destdir=dirname -- "$dest" setx destdir=dirname -- "$dest"
@ -172,6 +185,7 @@ for file in "$@"; do
fi fi
fi fi
fi fi
[ "$interaction" == --DEFAULT-- ] && interaction=-i
if [ -z "$userhost" -a -z "$destdir" ]; then if [ -z "$userhost" -a -z "$destdir" ]; then
eerror "$rule: règle invalide: destdir est vide" eerror "$rule: règle invalide: destdir est vide"