Objectif de ce guide
Envoyez un classeur local dans une session RDP, puis récupérez-le sans modification. Vous vérifierez l’état du transfert et son SHA-256 avant d’appliquer le même processus à un résultat enregistré par une application distante. Ces étapes reposent sur l’interface de rdp-cli 0.1.0 et le flux de fichiers vérifié le 21 septembre 2026. Il s’agit d’un guide de reproduction, pas d’un nouveau test exécuté pour cet article.
Préparer la session et le fichier
Téléchargez la version adaptée à votre ordinateur, puis suivez le démarrage rapide pour vous connecter à un serveur Windows RDP autorisé. Conservez data.session et remplacez SESSION. Le serveur doit autoriser la redirection de lecteurs et l’appelant doit disposer des droits sur les fichiers. VNC ne fournit pas ce lecteur d’échange.
Chaque session possède son propre répertoire d’échange. --path est relatif à ce répertoire, et non un chemin Windows quelconque comme C:\Users\.... L’application distante y accède par un lecteur redirigé. Les commandes de fichiers n’exigent ni visionneuse ni prise de contrôle du clavier ou de la souris.
Enregistrez le classeur d’exemple dans le répertoire local courant sous service-activity.xlsx. Il contient 12 mois de données de service fictives et fait 4 489 octets. Les exemples utilisent rdp-cli dans PATH. Sous Windows, placez-vous dans le dossier de l’EXE et utilisez .\rdp-cli.exe ; sous Linux, utilisez la commande installée ou ./rdp-cli-linux-x86_64 / ./rdp-cli-linux-arm64.
rdp-cli status --session SESSION
rdp-cli files list --session SESSION
Vérifiez la connexion, les capacités négociées et la réponse de la liste. Si l’accès aux fichiers est indisponible, examinez d’abord la stratégie du serveur ou les autorisations.
Envoyer et attendre la fin
rdp-cli files upload --session SESSION --local ./service-activity.xlsx --path service-activity.xlsx
Un démarrage accepté peut renvoyer data.state: queued et data.transfer_id. Conservez cet identifiant comme TRANSFER_ID. L’acceptation ne prouve pas que la copie est terminée.
rdp-cli files status --session SESSION --transfer-id TRANSFER_ID
Dans la réponse de statut, lisez data.state, comparez data.bytes_transferred à data.total_bytes et vérifiez l’empreinte du fichier terminé dans data.files[].sha256.
Répétez la consultation jusqu’à un état final. Continuez uniquement avec completed, les 4 489 octets attendus et l’empreinte vérifiée. L’application distante peut alors ouvrir le classeur dans le lecteur redirigé de cette session. Un nom visible dans une liste ne suffit pas à prouver la fin du transfert.
Récupérer et comparer les octets
Ne modifiez pas le classeur pendant ce premier aller-retour :
rdp-cli files download --session SESSION --path service-activity.xlsx --local ./service-activity-returned.xlsx
Le téléchargement renvoie un nouveau data.transfer_id. Utilisez cet identifiant avec files status. Après completed, le fichier local est service-activity-returned.xlsx. Comparez les deux fichiers sous macOS :
shasum -a 256 ./service-activity.xlsx ./service-activity-returned.xlsx
Sous Linux :
sha256sum ./service-activity.xlsx ./service-activity-returned.xlsx
Sous Windows PowerShell :
Get-FileHash -Algorithm SHA256 .\service-activity.xlsx, .\service-activity-returned.xlsx
Les deux empreintes doivent être 1869e5708fe8922a99ff3efee1c0d285df3dd94588d59f5ad48f282db915df51. Si vous avez modifié le classeur à distance, il ne doit plus nécessairement correspondre à l’original. Enregistrez le résultat dans le lecteur d’échange, récupérez son chemin et vérifiez son contenu.
Transférer un dossier entier
Préparez un dossier local source-folder avec les fichiers à envoyer :
rdp-cli files upload --session SESSION --local ./source-folder --path source-folder
Attendez la fin de cet envoi avant de récupérer le dossier :
rdp-cli files download --session SESSION --path source-folder --local ./received-folder
Consultez chaque transfert séparément. L’arborescence et les répertoires vides sont conservés ; ./received-folder désigne exactement la racine de destination. Les fichiers d’un dossier sont finalisés individuellement. Un état partial ou une annulation peut laisser des fichiers déjà terminés : l’arborescence entière ne constitue pas une transaction atomique unique.
Récupérer sans répéter une opération incertaine
- Destination existante : choisissez un autre chemin ou ajoutez
--overwriteuniquement pour un remplacement voulu. L’écrasement n’est pas activé par défaut. FILE_BUSY: attendez la fin de l’enregistrement ou de l’export dans l’application distante, puis examinez le fichier et le transfert avant de réessayer.- Réponse initiale perdue : consultez
rdp-cli files status --session SESSIONpour retrouver les transferts connus. Ne répétez pas immédiatement un envoi ou un écrasement dont le résultat est inconnu. failed,partialoucancelled: vérifiez les résultats par fichier et la cause. Les fichiers terminés peuvent rester présents. Une déconnexion ou la perte des droits peut arrêter le transfert ; une nouvelle connexion ne le reprend pas automatiquement.- Chemin invalide : utilisez un chemin relatif à l’échange avec des
/. Les chemins absolus,.., liens dangereux et noms en conflit sont refusés.
Pour arrêter un transfert connu, utilisez son véritable identifiant puis vérifiez son état :
rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID
La pause de la saisie du bureau n’annule pas les transferts. completed confirme une copie d’octets, pas la justesse du rapport créé par l’application.
Passer à un résultat distant vérifié
Le cas LibreOffice Calc suit le même cycle envoi → édition distante → récupération. Vous y trouverez le rapport réellement enregistré, la capture originale, les formules et les totaux vérifiés. Consultez les capacités de fichiers et limites des protocoles avant de reproduire ce flux ailleurs.