Skip to main content

SCP Interactive tool with terminal UI for file transfers

Project description

SCPTUI - SCP Interactive Tool

📁 An interactive SCP (Secure Copy Protocol) tool with a beautiful terminal UI for easy file transfers between local and remote systems.

SCPTUI Demo

Features

  • 🎨 Interactive Terminal UI - Built with Textual and Rich for a modern CLI experience
  • 📤 Upload Files - Select local files/folders and upload to remote server
  • 📥 Download Files - Browse remote files and download to local system
  • 📊 Progress Tracking - Real-time progress bars with tqdm integration
  • 🔐 Secure Connections - SSH key and password authentication support
  • 🚀 Easy to Use - Simple command-line interface

Installation

# Clone the repository
cd scptui

# Install dependencies
pip install -e .

# Or install with development dependencies
pip install -e ".[dev]"

Usage

SCPTUI uses the same syntax as the traditional SCP command:

scptui [-P port] [-i identity_file] [-r] [-v] [-R] source target

Remote path format: user@host[:port]:path

  • Standard: user@example.com:/path
  • With custom port: user@example.com:2222:/path

Download files from remote server

# Download a file
scptui user@example.com:/remote/file.txt /local/path/

# Download a directory (recursive)
scptui -r user@example.com:/remote/dir/ /local/dir/

Upload files to remote server

# Upload a file
scptui /local/file.txt user@example.com:/remote/path/

# Upload a directory (recursive)
scptui -r /local/dir/ user@example.com:/remote/path/

Command options

scptui --help

positional arguments:
  source                Source file/directory (local path or user@host:path)
  target                Target file/directory (local path or user@host:path)

options:
  -h, --help            show this help message and exit
  -P port               Port to connect to on the remote host (default: 22)
  -i identity_file      Identity file (private key) for public key authentication
  -p PASSWORD           Password for authentication
  -r, --recursive       Recursively copy entire directories
  -v, --verbose         Verbose mode
  -R, --interactive-right
                        Browse local directory (reverse default behavior of browsing remote)

Examples

Using SSH key authentication

scptui -i ~/.ssh/id_rsa user@example.com:/remote/file.txt /local/

Using password authentication

scptui -p mypassword user@example.com:/remote/file.txt /local/

Custom SSH port

You can specify the port in two ways:

Using -P flag:

scptui -P 2222 user@example.com:/remote/file.txt /local/

Inline in the path (user@host:port:path):

scptui user@example.com:2222:/remote/file.txt /local/

Note: Port in path takes precedence over -P flag.

Verbose mode with recursive copy

scptui -v -r -i ~/.ssh/id_rsa /local/dir/ user@example.com:/remote/backup/

Combined example with custom port

scptui -i ~/.ssh/id_rsa -r /local/backup/ user@example.com:1234:/remote/backup/

Interactive selection side

By default, the interactive file browser automatically opens on the remote (SSH) side:

  • Download: Browse remote files interactively to select what to download
  • Upload: Browse remote destination interactively to select where to upload

Use -R to switch to browsing the local directory:

# Upload: Browse local files interactively (select what to upload)
scptui -R /local/path/ user@example.com:/remote/path/

# Download: Browse local destination interactively (select where to save)
scptui -R user@example.com:/remote/path/ /local/path/

Development

# Install development dependencies
pip install -e ".[dev]"

# Format code with black
black scptui/

# Lint with ruff
ruff check scptui/

# Run tests
pytest

Dependencies

  • paramiko - SSH/SCP functionality
  • rich - Beautiful terminal output
  • textual - Interactive terminal UI framework
  • tqdm - Progress bars

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scptui-0.1.0-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file scptui-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: scptui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.17

File hashes

Hashes for scptui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd9efe1084f3996c0cb2157ebaa1eb1d69fc3543f4c5f1773b04346d5ebfce6a
MD5 a840557c1f99c457a38133481d961d50
BLAKE2b-256 6603f88e21085f7f18a8440c6ba0673a389388311a4f45f1e71623c7ee66789a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page