Skip to content
This repository was archived by the owner on Mar 18, 2018. It is now read-only.

Repository files navigation

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

This repository has moved to Shipit main repository

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

ssh-pool

Build StatusDependency StatusdevDependency Status

Run remote commands over a pool of server using SSH.

Install

npm install ssh-pool

Usage

varsshPool=require('ssh-pool');varpool=newsshPool.ConnectionPool(['user@server1','user@server2']);pool.run('hostname').then(function(results){console.log(results[0].stdout);// 'server1'console.log(results[1].stdout);// 'server2'});

new Connection(options)

Create a new connection to run command on a remote server.

Arguments:

@param {object} options Options
@param {string|object} options.remote Remote
@param {Stream} [options.stdout] Stdout stream
@param {Stream} [options.stderr] Stderr stream
@param {string} [options.key] SSH key
@param {function} [options.log] Log method

The remote can use the shorthand syntax or an object:

// Default user will be deploy and ssh default port.newConnection({remote: 'localhost'});// Default ssh port will be used.newConnection({remote: 'user@localhost'});// Custom user and custom port.newConnection({remote: 'user@localhost:22'});// Object syntax.newConnection({remote: {user: 'user',host: 'localhost',port: 22}});

The log method is used to log output directly:

varconnection=newConnection({remote: 'localhost',log: console.log.bind(console)});connection.run('pwd');// Will output:// Running "pwd" on host "localhost".// @localhost /my/directory

connection.run(command, [options], [cb])

Run a command on the remote server, you can specify custom childProcess.exec options. A callback or a promise can be used.

Arguments:

@param {string} command Command
@param {object} [options] Exec options
@param {function} [cb] Callback
@returns {Promise}
connection.run('ls',{env: {NODE_ENV: 'test'}}).then(function(result){result.stdout;// stdout outputresult.stderr;// stderr outputresult.child;// child object});

connection.copy(src, dest, [options], [cb])

Copy a file or a directory to a remote server, you can specify custom childProcess.exec options. A callback or a promise can be used.

Arguments:

@param {string} src Source
@param {string} dest Destination
@param {object} [options] Exec Options
@param {function} [cb] Callback
@returns {Promise}
connection.copy('./localfile','/remote-file',{env: {NODE_ENV: 'test'}}).then(function(result){result.stdout;// stdout outputresult.stderr;// stderr outputresult.child;// child object});

new ConnectionPool(connections, [options])

Create a new pool of connections and custom options for all connections.

If you use the short syntax, connections will be automatically created, else you can use previous created connections.

// Use shorthand.varpool=newConnectionPool(['server1','server2']);// Use previously created connections.varconnection1=newConnection({remote: 'server1'});varconnection2=newConnection({remote: 'server2'});varpool=newConnectionPool([connection1,connection2]);

pool.run(command, [options], [cb])

Same as connection.run, except that the command is executed in parallel on each server of the pool.

Arguments:

@param {string} command Command
@param {object} [options] Options
@param {function} [cb] Callback
@returns {Promise}
pool.run('hostname').then(function(results){// ...});

pool.copy(src, dest, [options], [cb])

Same as connection.copy, except that the copy is done in parallel on each server of the pool.

Options:

@param {object} [options.direction] Direction of copy

Also all exec options are supported.

Arguments:

@param {string} src Source
@param {string} dest Destination
@param {object} options Options
@param {function} [cb] Callback
@returns {Promise}
pool.copy('./localfile','/remote-file').then(function(results){// ...});

License

MIT

About

Run remote commands over a pool of server using SSH.

Resources

Stars

38 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages