From 8c22012d136b5a8a331167bcceb6848699bdebc3 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sat, 22 Apr 2017 10:22:18 +0400 Subject: [PATCH] ufile: copier en local sans utiliser scp si possible --- ufile | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ufile b/ufile index 4c96829..9b3cef1 100755 --- a/ufile +++ b/ufile @@ -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"