Задача руководства

Передайте локальную книгу в сеанс RDP и получите обратно неизменённую копию. Проверьте состояние передачи и SHA-256, а затем используйте тот же порядок для результата, сохранённого удалённым приложением. Шаги основаны на интерфейсе rdp-cli 0.1.0 и проверенном 21 сентября 2026 года файловом процессе. Это инструкция по воспроизведению, а не новый прогон испытаний.

Подготовка сеанса и примера

Скачайте версию для своего компьютера и по краткому руководству подключитесь к разрешённому серверу Windows RDP. Сохраните data.session и замените SESSION ниже. Сервер должен разрешать перенаправление дисков, а вызывающая сторона — иметь доступ к файлам. VNC не предоставляет такой обменный диск.

У каждого сеанса отдельный каталог обмена. --path задаёт путь относительно этого каталога, а не произвольный путь Windows вроде C:\Users\.... Удалённое приложение видит каталог как перенаправленный диск. Файловые команды CLI не требуют просмотрщика или захвата управления клавиатурой и мышью.

Сохраните пример книги в текущем локальном каталоге под именем service-activity.xlsx. Размер — 4 489 байт, внутри вымышленные данные сервиса за 12 месяцев. Примеры используют rdp-cli из PATH. В Windows работайте из папки EXE и замените его на .\rdp-cli.exe; в Linux используйте установленную команду либо ./rdp-cli-linux-x86_64 / ./rdp-cli-linux-arm64.

rdp-cli status --session SESSION
rdp-cli files list --session SESSION

Проверьте соединение, согласованные возможности и ответ со списком файлов. Если файловый доступ недоступен, сначала проверьте политику сервера и разрешения.

Загрузка и ожидание завершения

rdp-cli files upload --session SESSION --local ./service-activity.xlsx --path service-activity.xlsx

Принятый запрос может вернуть data.state: queued и data.transfer_id. Сохраните этот ID как TRANSFER_ID. Принятие запроса ещё не означает завершения.

rdp-cli files status --session SESSION --transfer-id TRANSFER_ID

В ответе состояния проверьте data.state, сравните data.bytes_transferred с data.total_bytes и найдите хеш завершённого файла в data.files[].sha256.

Повторяйте запрос состояния до конечного результата. Продолжайте только после completed и проверки ожидаемых 4 489 байт и хеша. После этого удалённое приложение может открыть книгу на перенаправленном диске данного сеанса. Одного видимого имени файла недостаточно.

Скачивание и проверка байтов

При первом проходе не изменяйте книгу:

rdp-cli files download --session SESSION --path service-activity.xlsx --local ./service-activity-returned.xlsx

Скачивание возвращает собственный data.transfer_id. Подставьте новый ID в запрос files status. После completed локальным результатом будет service-activity-returned.xlsx. В macOS сравните файлы так:

shasum -a 256 ./service-activity.xlsx ./service-activity-returned.xlsx

В Linux:

sha256sum ./service-activity.xlsx ./service-activity-returned.xlsx

В Windows PowerShell:

Get-FileHash -Algorithm SHA256 .\service-activity.xlsx, .\service-activity-returned.xlsx

Оба хеша должны быть 1869e5708fe8922a99ff3efee1c0d285df3dd94588d59f5ad48f282db915df51. Если книга изменена удалённо, совпадения с оригиналом ожидать уже не следует. Сохраните результат на обменном диске, скачайте его по соответствующему пути и проверьте содержимое.

Передача целой папки

Подготовьте локальную папку source-folder с нужными файлами:

rdp-cli files upload --session SESSION --local ./source-folder --path source-folder

Дождитесь завершения этой загрузки, затем скачайте папку:

rdp-cli files download --session SESSION --path source-folder --local ./received-folder

Проверяйте каждую передачу отдельно. Структура и пустые каталоги сохраняются; ./received-folder — точный корневой каталог назначения. При передаче каталога файлы завершаются по отдельности. Состояние partial или отмена могут оставить уже готовые файлы: вся структура не является одной атомарной транзакцией.

Восстановление при неопределённом результате

  • Путь назначения уже существует: выберите другой путь либо добавьте --overwrite, только если действительно хотите заменить файл. По умолчанию перезапись запрещена.
  • FILE_BUSY: дождитесь сохранения или экспорта в удалённом приложении, затем проверьте файл и передачу перед повторной попыткой.
  • Нет ответа на запуск: запросите rdp-cli files status --session SESSION, чтобы проверить известные передачи. Не повторяйте немедленно загрузку или перезапись с неизвестным результатом.
  • failed, partial, cancelled: изучите результат каждого файла и причину. Завершённые файлы могут остаться. Разрыв соединения или потеря файловых прав могут остановить передачу; новое соединение не продолжает её автоматически.
  • Недопустимый путь: используйте относительные пути обменного диска с /. Абсолютные пути, .., небезопасные ссылки и конфликтующие имена отклоняются.

Для остановки известной передачи укажите её действительный ID и проверьте итоговое состояние:

rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID

Приостановка ввода рабочего стола не отменяет передачу файлов. completed подтверждает копирование байтов, но не правильность отчёта, созданного приложением.

Переход к проверенному удалённому результату

Пример LibreOffice Calc использует тот же цикл: загрузка → удалённое редактирование → скачивание. В нём есть фактически сохранённый отчёт, исходный снимок экрана, формулы и проверенные суммы. Перед применением в другой среде изучите файловые возможности и ограничения протоколов.