Mettre à jour le remote full path

Bonjour :slight_smile:

J’essaie depuis ce soir de prendre en main waarp-gateway et notamment les règles post-transfert. J’ai fait plusieurs scénarios et je butte sur un :

Je souhaite initier un transfert avec la commande waarp-gateway transfert add pour aller récupérer un fichier sur un serveur distant.
Une fois récupéré, y appliquer une première règle pour déplacer le fichier du dossier in vers le dossier out ; puis une seconde règle de transfert pour envoyer le fichier sur un autre serveur distant.

J’ai donc mes deux serveurs distants ajoutés en tant que partenaires, deux règles de transferts « send_to_client » et « default ».

Sauf qu’au moment du deuxième transfert, j’ai une erreur « Error on remote partner: file does not exist » dont je ne parviens pas à me débarrasser puisque je n’arrive pas à changer l’instruction 'remote full path".

Voici mes configurations et messages d’erreurs :

Règles :

#  waarp-gateway -a 'http://admin@localhost:8080' rule list

Rules:
● Rule default (send)
    Comment:
    Path:                   default
    Local directory:
    Remote directory: ~   => peu importe ce que je paramètre ici, se rajoute devant /var/lib/waarp... cf erreurs
    Temp receive directory:
    Pre tasks:
    Post tasks:
    Error tasks:
    Authorized agents: <all>
● Rule send_to_client (receive)
    Comment:
    Path:                   client_send
    Local directory:
    Remote directory:
    Temp receive directory:
    Pre tasks:
    Post tasks:
    ├─Command MOVERENAME with args: {"path":"#OUTPATH#/#ORIGINALFILENAME#"}
    └─Command TRANSFER with args: {"file":"#OUTPATH#/#ORIGINALFILENAME#","to":"distant_client","as":"root","rule":"default"}
    Error tasks:
    Authorized agents: <all>

Transfert :

# waarp-gateway -a 'http://admin@localhost:8080' transfer add -f 'test.txt' -w 'receive' -p 'distant_server' -l 'root' -r 'send_to_client'

The transfer of file test.txt was successfully added.

Erreurs

● Transfer 48 (receive as client) [DONE]
    Remote ID:         1761206342862766080
    Protocol:          sftp
    File to retrieve:  test.txt
    File saved as:     test.txt
    Rule:              send_to_client
    Requested by:      root
    Requested to:      distant_server
    Full local path:   /var/lib/waarp-gateway/out/test.txt
    Full remote path:  test.txt
    File size:         16
    Start date:        2024-02-24 02:48:08.427057 +0100 CET
    End date:          2024-02-24 02:48:11.601458 +0100 CET
    Bytes transferred: 16
● Transfer 49 (send as client) [ERROR]
    Remote ID:         1761206356171292672
    Protocol:          sftp
    File to send:      /var/lib/waarp-gateway/out/test.txt
    Rule:              default
    Requested by:      root
    Requested to:      distant_client
    Full local path:   /var/lib/waarp-gateway/out/test.txt
    Full remote path:  ~/var/lib/waarp-gateway/out/test.txt => avec le "~" qui se rajoute
    File size:         16
    Start date:        2024-02-24 02:48:11.600065 +0100 CET
    End date:          N/A
    Step:              StepSetup
    Bytes transferred: 0
    Error code:        TeUnknownRemote
    Error message:     Error on remote partner: file does not exist

Au final, quoi que je mette dans le Remote directory de default, ça vient se rajouter devant /var/lib/waarp-gateway/out/test.txt

Je bloque depuis un moment sans avancer, est-ce que quelqu’un aurait la solution ? ça me parait tout bête mais ça m’échappe.

Merci !

Bonjour,

C’est le Local Directory qui doit être utiliser.
Dans le cadre d’un transfert en envoie le fichier est lu dans le Local Directory et écrit sur le partenaire dans le Remote Directory.
Pour un transfert en réception le fichier est lu dans le Remote Directory du partenaire distant et est écrit dans le Local Directory de la machine hôte.

Par conséquent le message « Error on remote partner: file does not exist » indique que le dossier ~/var/lib/waarp-gateway/out/ n’existe pas.
Si vous supprimez le RemoteDirectory de la règle default le transfert devrait se dérouler normalement.

Bonjour ! Merci pour votre retour et vos explications :slight_smile:
Si je reprends, ma règle default est bien en send, donc c’est le remote path qui est utilisé.
Ce que je trouve étonnant c’est que le remote path par défaut est ‹ /var/lib/waarp-gateway/out/ ›, et que quoi que je mette dans default, ça s’ajoute en amont de cette valeur.

Voici ce qu’il se passe si j’enlève le remote directory de default :

# waarp-gateway -a 'https://admin@waarp-gateway.XXX.fr:8080' transfer add -f 'test.txt' -w 'receive' -p 'distant_server' -l 'root' -r 'send_to_client'
Password:

The transfer of file test.txt was successfully added.
# waarp-gateway -a "https://admin@waarp-gateway.XXX.fr:8080" rule list
Password:

Rules:
● Rule default (send)
    Comment:
    Path:                   default
    Local directory:
    Remote directory:
    Temp receive directory:
    Pre tasks:
    Post tasks:
    Error tasks:
    Authorized agents: <all>
● Rule send_to_client (receive)
    Comment:
    Path:                   client_send
    Local directory:
    Remote directory:
    Temp receive directory:
    Pre tasks:
    Post tasks:
    ├─Command MOVERENAME with args: {"path":"#OUTPATH#/#ORIGINALFILENAME#"}
    └─Command TRANSFER with args: {"file":"#OUTPATH#/#ORIGINALFILENAME#","to":"distant_client","as":"root","rule":"default"}
    Error tasks:
    Authorized agents: <all>
# waarp-gateway -a 'https://admin@waarp-gateway.XXX.fr:8080' transfer get 52
Password:

● Transfer 52 (send as client) [ERROR]
    Remote ID:         1762058844315320320
    Protocol:          sftp
    File to send:      /var/lib/waarp-gateway/out/test.txt
    Rule:              default
    Requested by:      root
    Requested to:      distant_client
    Full local path:   /var/lib/waarp-gateway/out/test.txt
    Full remote path:  /var/lib/waarp-gateway/out/test.txt
    File size:         16
    Start date:        2024-02-26 11:15:40.612214 +0100 CET
    End date:          N/A
    Step:              StepSetup
    Bytes transferred: 0
    Error code:        TeUnknownRemote
    Error message:     Error on remote partner: file does not exist

Pour information, si je créé le /var/lib … sur le partenaire distant_client, le transfert se termine comme attendu, dans le répertoire de destination indiqué

Bonjour !

Je pense comprendre l’origine du « problème » sur l’onglet « Gestion des dossiers » dans la documentation - Gestion des dossiers — Documentation Waarp Gateway 0.8.1

Par défaut, dans le fichier de configuration, le GatewayHome est effectivement égal à /var/lib/waarp-gateway
Ce qui semble correspondre à comment la gateway renvoie son fichier dans mes exemples au dessus.

Mais je ne comprends pas la praticité de ce fonctionnement, est-il plutôt possible tout simplement de paramétrer une règle pour envoyer dans le dossier racine de l’utilisateur utilisé pour la connexion SFTP ?
@Marakiis Est-ce qu’un tel paramètre existe ? Mes tests en ce sens ne sont pas concluants.

Merci beaucoup !

Vous voulez simplement déposer le fichier dans le dossier racine de l’utilisateur SFTP ?
Dans ce cas il suffit de laisser le remote directory de la règle vide.
Le remote directory de la règle définit le dossier dans lequel le fichier sera déposé (récupéré dans le cas d’un transfert receive).

à tête bien reposé, il a été plus clair pour moi de voir ce qui n’allait pas.
Le paramètre TRANSFER with args: {« file »:« #OUTPATH#/#ORIGINALFILENAME# » …
faisait que le client SFTP essayait d’envoyer le fichier dans un répertoire /var/lib/waarp-gateway/out/ qui correspond à #OUTPATH#
En laissant uniquement #ORIGINALFILENAME# cela fonctionne comme attendu, à savoir le fichier est déposé dans le dossier racine de l’utilisateur :slight_smile: