Smart Processes Management
Shell executor for Runnerty:
Through NPM
npm i @runnerty/executor-shell
You can also add modules to your project with runnerty-cli
npx runnerty-cli 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-cli globally you can include the module with this command:
rty add @runnerty/executor-shell
Add in config.json:
{
"id": "shell_default",
"type": "@runnerty-executor-shell"
}
{
"id": "shell_ssh",
"type": "@runnerty-executor-shell",
"host": "remote.server.com",
"username": "runnerty",
"privateKey": "./ssh/privateKeyFile.pem"
}
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. |
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"