Skip to content

runnerty/executor-shell

Repository files navigation

Smart Processes Management

NPM version Downloads Dependency Status code style: prettier

Shell executor for Runnerty

Installation:

Through NPM

npm i @runnerty/executor-shell

You can also add modules to your project with runnerty

npx runnerty add @runnerty/executor-shell

This command installs the module in your project, adds example configuration in your config.json and creates an example plan of use.

If you have installed runnerty globally you can include the module with this command:

runnerty add @runnerty/executor-shell

Configuration sample:

Add in config.json:

Local

{
  "id": "shell_default",
  "type": "@runnerty-executor-shell"
}

Remote (SSH)

{
  "id": "shell_ssh",
  "type": "@runnerty-executor-shell",
  "host": "remote.server.com",
  "username": "runnerty",
  "privateKey": "./ssh/privateKeyFile.pem"
}
SSH configuratión

Executor shell SSH connection relies on [mscdex/ssh2]:https://github.com/mscdex/ssh2 and these are the exposed options:

Option Type Description
host string Hostname or IP address of the server.
port number Port number of the server.
forceIPv4 boolean Only connect via resolved IPv4 address for host.
forceIPv6 boolean Only connect via resolved IPv6 address for host.
hostHash "md5" or "sha1" The host's key is hashed using this method and passed to hostVerifier.
username string Username for authentication.
password string Password for password-based user authentication.
agent string Path to ssh-agent's UNIX socket for ssh-agent-based user authentication (or 'pageant' when using Pagent on Windows).
privateKey string Path to the file that contains a private key for either key-based or hostbased user authentication (OpenSSH format).
passphrase string For an encrypted private key, this is the passphrase used to decrypt it.
localHostname string Along with localUsername and privateKey, set this to a non-empty string for hostbased user authentication.
localUsername string Along with localHostname and privateKey, set this to a non-empty string for hostbased user authentication.
tryKeyboard boolean Try keyboard-interactive user authentication if primary user authentication method fails.
keepaliveInterval number How often (in milliseconds) to send SSH-level keepalive packets to the server. Set to 0 to disable.
keepaliveCountMax number How many consecutive, unanswered SSH-level keepalive packets that can be sent to the server before disconnection.
readyTimeout number * How long (in milliseconds) to wait for the SSH handshake to complete.
strictVendor boolean Performs a strict server vendor check before sending vendor-specific requests.
agentForward boolean Set to true to use OpenSSH agent forwarding (auth-agent@openssh.com) for the life of the connection.

Plan sample:

Add in plan.json:

{
  "id": "shell_default",
  "command": "tar cvfz /var/backups/stf.tar /var/stranger_things/"
}
{
  "id": "shell_default",
  "command": "python",
  "args": ["myscript.py", "hello"]
}
{
  "id": "shell_default",
  "command": "echo",
  "args": ["hello world"]
}

Using the outputJSON param, if you have a process which returns a JSON object, the executor will generate automatically a value for each value of the object:

{
  "id": "shell_default",
  "command": "node my-returning-object-process.js"
}

This the output of my-returning-object-process.js:

{
  "name": "my output name",
  "lastName": "my output lastName"
}

Output values with the object's values. It is possible to access the values by GETVALUE function:

@GV(PROCESS_EXEC_JSON_NAME) --> "my output name"
@GV(PROCESS_EXEC_JSON_LASTNAME) --> "my output lastName"