RSET(1)

πŸ“¦
version 3.3 Β· 2 versions
, in alpine 3.24

πŸ’… RSET(1) β€” rset: remote staging and execution tool πŸ’…

From the General Commands Manual, bestie. This is the whole vibe: rset is out here staging and executing remote stuff like a main character. ✨

🌸 NAME 🌸

rset β€” remote staging and execution tool. That's the name, no cap. πŸ’–

✨ SYNOPSIS ✨

rset [-AenRt] [-E environment] [-F sshconfig_file] [-f routes_file]
     [-x label_pattern] hostname ...
rset [-e] [-E environment] [-F sshconfig_file] [-f routes_file]
     [-x label_pattern] -o log_directory -p workers hostname ...

πŸ’– DESCRIPTION πŸ’–

Okay so rset evaluates script fragments written in Progressive Label Notation (pln(5)), executing each script in sequence using ssh connection multiplexing. It accepts one or more hostnames which match the labels in routes_file. Slay. πŸ¦‹

The arguments are as follows:

  • -A β€” Download files listed in label export paths to the local _archive directory in the format hostname:basename(filename). Absolute paths are permitted, or paths relative to the staging directory. Very _archive core. πŸ“¦
  • -e β€” Exit immediately if any label returns non-zero exit status. No dragging it out, periodt. πŸ’€
  • -n β€” Do not connect to remote hosts. May be combined with -x to highlight label names that match. Special text defined between { and } is still executed locally. Spooky local-only energy. πŸ‘€
  • -R β€” Send files listed in label export paths from the local _archive directory. This is the reverse of -A. Reverse icon behavior. πŸ”
  • -t β€” Allow TTY input by copying the content of each label to the remote host instead of opening a pipe to the interpreter. TTY girlies rise. ⌨️
  • -E β€” Set one or more environment variables using the format name="value" .... Env var moment. 🌈
  • -F β€” Specify a config file for ssh(1) to use. Config file bestie. πŸŽ€
  • -f β€” Specify a routes_file. This file is composed of labels which correspond to hostnames or IP addresses which are matched against hostname. The default is routes.pln. Default route vibes. πŸ›£οΈ
  • -o β€” Log directory to use for background workers. Each log file is created for each worker using the format YYYY-MM-DD_HHMMSS.n. Timestamped and organized, we love. πŸ—‚οΈ
  • -p β€” Parallel execution distributed across the specified number of workers. The log directory must also be specified using -o. A summary of results is displayed using the rexec-summary script located in the search path. Parallelism, but make it documented. ⚑
  • -x β€” Execute labels matching the specified regex. By default only labels beginning with [0-9a-z] are evaluated. Regex girlie behavior. πŸ”

πŸ¦‹ ENVIRONMENT πŸ¦‹

Status messages for each stage of execution may be customized by setting RSET_HOST_CONNECT, RSET_HOST_CONNECT_ERROR, RSET_LABEL_EXEC_BEGIN, RSET_LABEL_EXEC_END, RSET_LABEL_EXEC_ERROR, and RSET_HOST_DISCONNECT.

Setting RSET_HOST_CONNECT disables the default status messages and is the only required variable. These have no effect in conjunction with the -n flag.

Lowkey important: if you're in -n mode, these status-message variables are doing nothing. They are not invited to the local party. πŸ™ˆ

The following variables are interpolated:

  • %e β€” exit code
  • %l β€” label name
  • %h β€” hostname
  • %s β€” session identifier
  • %T β€” rfc-3339 timestamp
  • %% β€” literal %

Execution on the remote host sets the following environment variables:

  • INSTALL_URL β€” Used by rinstall(1) for fetching content from _sources. Fetch queen. πŸ‘‘
  • SD β€” Staging directory where rset unpacks utilities and configuration files.
  • HTTP_TRACE β€” If defined, print log messages from miniquark(1).
  • SSH_TRACE β€” If defined, print commands used for remote execution.

Environment state may be set for the duration of the ssh session using renv(1), using name=value as the first argument. Env state, but make it session-scoped. πŸ’œ

πŸŽ€ FILES πŸŽ€

Available hosts and the pathnames to labeled scripts to run are read from routes.pln, located in the current directory.

A ssh master is established at the beginning of a session and all subsequent interactions with a host are run over a socket at /tmp/rset_control_{hostname}.

The local directory _rutils is created if it does not exist, and is shipped to the remote host at the beginning of each execution to directory named /tmp/rset_staging_{http_port}.

πŸ‘‘ OPTIONS πŸ‘‘

The following options are recognized when parsing a pln(5) file:

πŸ§ͺ environment=

Space separated list of environment variables. Only values matching the pattern name="value" are added to the environment on the remote host.

πŸ§ͺ environment_file=

Path to a file which defines environment variables validated by renv(1).

πŸ§ͺ interpreter=

The interpreter to run a script fragment with. Defaults to /bin/sh, but any language may be used that is capable of reading scripts over STDIN. Multilingual icon. 🌍

πŸ§ͺ local_interpreter=

The interpreter to evaluate content that is prepended to a script. Defaults to /bin/sh.

πŸ§ͺ execute_with=

Command for elevating privileges, such as doas(1) and sudo(8). Permission elevation, but make it configurable. πŸ”₯

🌟 SINGLE USE OPTIONS 🌟

The following are effective only for the subsequent label:

πŸ¦‹ begin=

Execute a script using the local_interpreter before the label is executed on the remote lost β€” yep, the original page says β€œlost” here, and honestly same 😭 (it means host, bestie). Before-vibes only. 🫢

πŸ¦‹ end=

Execute a script using the local_interpreter after the label is executed on the remote host. After-vibes only. 🎬

🌈 SEE ALSO 🌈


With love and Debian energy, this page is from Debian, dated January 17, 2026. πŸ’ŒπŸŽ€

πŸ“¦ where this page comes from
  • alpine 3.24: rset-doc 3.3-r1 Β· ISC
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms