---
name: "remrun"
section: "1"
platform: "linux"
package: "remrun"
version: "0.2.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/remrun"
---

# remrun(1)

copy a file to a remote host and execute it

## NAME

**remrun** – copy a file to a remote host and execute it

## SYNOPSIS

**remrun** \[**-Nsv**\] \[**--noop**\] \[**--stdin**\] \[**--verbose**\] \[**-C** *local\_cksum\_command*\] \[**-c** *remote\_cksum\_command*\] \[**-T** *remote\_temp\_dir*\] *destination* *filename* \[*args...*\]

**remrun** \[**-V** \| **--version** \| **-h** \| **--help** \| **--features**\]

## DESCRIPTION

The **remrun** utility copies the specified file to the remote host using SSH under a temporary filename, executes it on the remote side, then removes the temporary file. By default, the remote program does not have access to the current process's standard input stream; the **-s** option has to be passed explicitly to enable that.

As a special case, if “-” (a single dash) is passed as the *filename* argument, **remrun** will read the contents of the standard input, store it into a temporary file, and then copy and execute that file, removing it afterwards. This is incompatible with the **-s** (**--stdin**) option.

The remote host to transfer the file to may be specified in two ways: either as a *\[username@\]host* pattern, or as a *ssh://\[username@\]host\[:port\]\[/\]* URI.

Note that the [sha256sum(1)](/sha256sum/1.md) tool is used both locally and remotely to make sure that the file has been transferred correctly. Its use may be overridden for the local host by the **-C** option, and for the remote one by the **-c** option; both commands are passed to the shell, so they may be comprised of more than one word, e.g. “sha256 -r”.

By default, the temporary file on the remote host is created in the current working directory, which is usually the home directory of the user account on that host. The **-T** command-line option allows a directory to be specified where this file will be created instead.

The **remrun** utility accepts the following command-line options:

- **-h**

  Display program usage information and exit.

- **-N**

  No-operation mode - do not perform any changes, simply report what would have been done.

- **-s**

  Allow the remote program access to the standard input stream. Please note that this will cause some SSH clients to read the whole input stream, regardless of whether the remote program only needs a line or two!

- **-V**

  Display program version information and exit.

- **-v**

  Verbose mode - display information about the actions performed.

## ENVIRONMENT

The operation of the **remrun** utility is not directly influenced by any environment variables.

## FILES

The operation of the **remrun** utility is not directly influenced by the contents of any files.

## EXAMPLES

Copy the *whoami.sh* file over to the “server” host, logging in as the “jrl” user account, then run it:

```
remrun jrl@server whoami.sh
```

Do the same, but for a remote host that runs FreeBSD and another command must be used instead of **sha256sum**:

```
remrun -c 'sha256 -r' jrl@server whoami.sh
```

Specify the commands to run directly:

```
printf 'uname -a\ndate -R\n' | remrun jrl@server -
```

## DIAGNOSTICS

The **remrun** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[mktemp(1)](/mktemp/1.md), [sha256sum(1)](/sha256sum/1.md), [ssh(1)](/ssh/1.md)

## STANDARDS

No standards were harmed during the production of the **remrun** utility.

## HISTORY

The **remrun** utility was written by Peter Pentchev in 2021.

## AUTHORS

Peter Pentchev ⟨roam@ringlet.net⟩

## BUGS

No, thank you :) But if you should actually find any, please report them to the author.
