Giter VIP home page Giter VIP logo

sequest's Introduction

Sequest -- Simple ssh client

sequest(host[, command[, opts]])

By default sequest will use your local ssh-agent to authenticate to remote hosts which should make it unnecessary to enter username, password or privateKey information.

var sequest = require('sequest')
sequest('[email protected]', 'ls', function (e, stdout) {
  if (e) throw e
  console.log(stdout.split('\n'))
})

Continuous mode

var seq = sequest('[email protected]')
seq.pipe(process.stdout) // only necessary if you want to see the output in your terminal
seq.write('ls -la')
seq.write('touch testfile')
seq.write('ls -la')
seq.end()

Each command will complete before the next is sent to the server. If any command returns a non-zero exit code it will emit an error which effectively ends the stream and the processing of subsequent commands.

Connection Options

Accepts all ssh2 connection options, most of which are unnecessary as you can define user and host information in the host string and because ssh-agent authentication is used when not supplying a privateKey.

The most common are listed below.

  • username - < string > - Username for authentication. Default: (none)

  • password - < string > - Password for password-based user authentication. Default: (none)

  • agent - < string > - Path to ssh-agent's UNIX socket for ssh-agent-based user authentication. sequest defaults this to process.env.SSH_AUTH_SOCK.

  • privateKey - < mixed > - Buffer or string that contains a private key for key-based user authentication (OpenSSH format). Default: (none)

  • passphrase - < string > - For an encrypted private key, this is the passphrase used to decrypt it. Default: (none)

  • publicKey - < mixed > - Optional Buffer or string that contains a public key for key-based user authentication (OpenSSH format). If publicKey is not set, it will be generated from the privateKey. Default: (none)

Custom options

  • proxy - < string > - Host to proxy connection through. Default: (none) :: (e.g [email protected])

Using options

var fs = require('fs')
var sequest = require('sequest')
// Load privateKey synchronously
var key = fs.readFileSync(process.env.HOME + '/.ssh/id_rsa')

// Callback API
sequest('[email protected]', {
  command: 'uptime',
  proxy: '[email protected]',
  privateKey: key
  }, function (err, stdout) {
    if (err) console.error(err)
    console.log(stdout)
})

// Streaming api
var seq = sequest('[email protected]', { proxy: '[email protected]'})
seq.pipe(process.stdout);
seq.write('ifconfig')

.connect(host[, opts])

Convenience API for making several calls to the same host.

var seq = sequest.connect('[email protected]')
seq('ls', function (e, stdout) {
  seq('ls '+stdout.split('\n')[0], function (e, stdout) {
    console.log(stdout.split('\n'))
    seq.end() // will keep process open if you don't end it
  })
})

.get(host, path[, opts])

get remote file

var reader = sequest.get('[email protected]', '/remote/path/to/file')
reader.pipe(process.stdout)

Also works with .connect()

var c = sequest.connect('[email protected]')
  , reader = c.get('/remote/path/to/file')
  ;
reader.pipe(process.stdout)

Default options, as defined by ssh2, are as follows:

{ flags: 'r',
  encoding: null,
  mode: 0666,
  bufferSize: 64 * 1024
}

.put(host, path[, opts])

write remote file

var writer = sequest.put('[email protected]', '/remote/path/to/file')
fs.createReadStream('/local/path').pipe(writer)
writer.on('close', function () {
  // finished writing.
})

Also works with .connect()

var c = sequest.connect('[email protected]')
  , writer = c.put('/remote/path/to/file')
  ;
fs.createReadStream('/local/path').pipe(writer)
writer.on('close', function () {
  // finished writing.
})

Default options, as defined by ssh2, are as follows:

{ flags: 'w',
  encoding: null,
  mode: 0666,
  autoClose: true
}

Credits

This would not be possible without Brian White's amazing ssh2 module.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.