https://github.com/runnerty/executor-shell
Runnerty module: Shell executor
https://github.com/runnerty/executor-shell
executor remote-execution runnerty shell ssh
Last synced: 3 months ago
JSON representation
Runnerty module: Shell executor
- Host: GitHub
- URL: https://github.com/runnerty/executor-shell
- Owner: runnerty
- License: mit
- Created: 2017-04-07T14:40:31.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2023-04-18T09:37:47.000Z (almost 3 years ago)
- Last Synced: 2025-10-23T10:34:15.521Z (3 months ago)
- Topics: executor, remote-execution, runnerty, shell, ssh
- Language: JavaScript
- Size: 107 KB
- Stars: 1
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Smart Processes Management
[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
# Shell executor for [Runnerty]
### Installation:
Through NPM
```bash
npm i @runnerty/executor-shell
```
You can also add modules to your project with [runnerty]
```bash
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:
```bash
runnerty add @runnerty/executor-shell
```
### Configuration sample:
Add in [config.json]:
#### Local
```json
{
"id": "shell_default",
"type": "@runnerty-executor-shell"
}
```
#### Remote (SSH)
```json
{
"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]:
```json
{
"id": "shell_default",
"command": "tar cvfz /var/backups/stf.tar /var/stranger_things/"
}
```
```json
{
"id": "shell_default",
"command": "python",
"args": ["myscript.py", "hello"]
}
```
```json
{
"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:
```json
{
"id": "shell_default",
"command": "node my-returning-object-process.js"
}
```
This the output of `my-returning-object-process.js`:
```json
{
"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:
```json
@GV(PROCESS_EXEC_JSON_NAME) --> "my output name"
@GV(PROCESS_EXEC_JSON_LASTNAME) --> "my output lastName"
```
[runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-shell.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-shell
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-shell.svg
[david-badge]: https://david-dm.org/runnerty/executor-shell.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-shell
[getvalue]: http://docs.runnerty.io/functions/
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/