Send files between machines - no installation required!

Related tags

Command-line skicka
Overview

skicka.pwy.io:99

Skicka (from Swedish send) allows to send files between machines - no installation required!

Transmitting a file is as easy as piping its data through curl:

cat your-file.txt | curl --data-binary @- skicka.pwy.io:99

... noting down the link returned by that command and running curl / wget on the target machine:

curl http://skicka.pwy.io:99/foo-bar > your-file.txt

# or

wget http://skicka.pwy.io:99/foo-bar

Alternatively, if your target machine doesn't have those tools, but it does have a web browser, you can pass a file name when uploading it:

cat your-file.txt | curl --data-binary @- 'skicka.pwy.io:99?name=your-file.txt'

... and then simply open the link returned by that command in your web browser - it will download the file as a regular attachment.

You can also transfer arbitrary data (including binary):

echo 'Hello, World!' | curl --data-binary @- skicka.pwy.io:99

How it works

Skicka is a proxy - when you run cat | curl, it doesn't store the file but rather keeps the TCP connection alive and then forwards it when you download the file on the target machine.

It's very much like magic-wormhole, just installation-free!

This also means that links generated by Skicka are one-shot - you can't download the same file twice (unless you run another cat | curl, of course).

Why

Many times I've had to transfer files between non-developer Linux <-> Windows machines, where installing Python tools was not an easy task, and hence zero-installation Skicka.

Roadmap

  • A simple web interface so that it's possible to transmit files without using terminal.

Limits

  • 8 GB maximum file size,

  • 120 seconds between running cat | curl and starting to download the file (note that the download itself can take longer, it's just that you must start the downloading in 2 minutes, otherwise the connection will get closed),

  • My server (in Hetzner) has a monthly 20 TB upload limit, so take that into consideration as well.

Note that those limits pertain only the public instance at skicka.pwy.io:99 - you can change the limits (passed through command-line arguments) if you want to launch a self-hosted instance.

Self-hosting

All options have reasonable defaults, so just running the executable should do it:

cargo run --release

You might want to adjust the listening port:

cargo run --release -- --listen 0.0.0.0:1234

... or maybe specify the motto (present when someone does GET /):

cargo run --release -- --motto "good say, sir! :3\r\n"

License

MIT License

Copyright (c) 2023 Patryk Wychowaniec

You might also like...
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.

Visual Assembly Canvas A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable nat

A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.
A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.

FileQL - File Query Language FileQL is a tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK. Sampl

Fast conversion between linear float and 8-bit sRGB

fast-srgb8 Small crate implementing fast conversion between linear float and 8-bit sRGB. Includes API for performing 4 simultaneous conversions, which

 ⚡️ A blazing fast way of maintaining powerful notes with connections between them.
⚡️ A blazing fast way of maintaining powerful notes with connections between them.

Zettl ⚡️ A blazing fast way of maintaining powerful notes with connections between them. Installing Zettl To install Zettl, you will need the Rust too

Facilitates navigating between tmux and nvim with C-hjkl

neovim-tmux-navigator Usage Use C-hjkl to navigate left, down, up, right, respectively. neovim-tmux-navigator will switch between vim splits and tmu

Adds back-and-forth jumping between current and previous focused windows to Sway.

sway-focus-back-and-forth Implements back-and-forth movement between the current and the previous focused windows. It also can be seen as a fix to thi

List public items (public API) of library crates. Enables diffing public API between releases.

cargo-public-items List public items (the public API) of a Rust library crate by analyzing the rustdoc JSON of the crate. Automatically builds the rus

Command line linguistic tools: display pronunciation, convert between regional norms of orthography

Command line linguistic tools: display pronunciation, convert between regional norms of orthography; support for multiple modern and ancient languages: English, Latin, Polish, Quechua, Tikuna

A command line interface meant to bridge the gap between Rust and shell scripting

clawbang A command line interface meant to bridge the gap between Rust and shell scripting. Intended for use with HEREDOCs and shebangs: $ clawbang

Owner
Patryk Wychowaniec
doing (hopefully useful) computer things | he, him
Patryk Wychowaniec
png_defringe_rs is a port of Immorpher's PNG Defringe program written in Rust to achieve easier installation and faster performance.

png_defringe_rs png_defringe_rs is a port of Immorpher's PNG Defringe program written in Rust to achieve easier installation and faster performance. U

null 2 Nov 17, 2022
A command-line tool to generate a list of required missing Android OS Project blobs.

aosp-missing-blobs aosp-missing-blobs is a nifty tool to identify required blobs (.so) that are missing from AOSP ROM builds, and to show which existi

Josh 176 Dec 16, 2022
This is an example Nostr rust project to enable '402 Payment Required' responses for requests to paid content.

Nostr Paywall Example This is an example Nostr rust project to enable 402 Payment Required responses for requests to paid content. To prove payment, a

Blake Jakopovic 6 May 6, 2023
Send copy events over the network

Copiepate Copiepate is a small utility to remotely set the content of a clipboard. I created this tool as I frequently use a remote tmux+vim setup and

Loïc Carr 14 Jun 12, 2022
🔔 CLI utility to send notifications to Slack via integration webhooks

Slack notifier Just a simple CLI tool to send notifications to Slack. Please note that this project is just a playground to start learning Rust, it is

Green.Mod 2 May 21, 2022
Send emails right from the terminal using Rust!

Send emails right from the terminal using Rust!

Dhravya Shah 7 Dec 21, 2022
Run your Rust CLI programs as state machines with persistence and recovery abilities

step-machine Run your CLI programs as state machines with persistence and recovery abilities. When such a program breaks you'll have opportunity to ch

Imbolc 31 Nov 23, 2022
A slightly smart clipboard tool - leverage the filesystem to persist across machines after shutdown.

clipd A slightly smart clipboard using the filesystem under ~/.clipd to persist after shutdown. cowsay "clipd is great" | clipd copy clipd paste ____

null 5 Aug 9, 2022
A lightweight terminal tool to manage processes in Unix machines.

TTV v0.0.1 TTV (term-task-viewer) is a lightweight tool to view and manage active processes in Unix machines. It provides an easy interface with vim-l

Caio Ishikawa 9 Aug 29, 2023
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.

Visual Assembly Canvas A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable nat

Phoomparin Mano 31 Oct 11, 2023