nodemiral-forcetty
Server Automation for NodeJS over SSH
Fork of arunoda's nodemiral with some hacks to run on RHEL/CentOS 7+
Install
npm install nodemiral-forcetty
Features
- Support connecting to any unix remote server
- Authenticate with password (using
sshpass
) or with apem
file - Can work with multiple servers at once
- Supports,
copy
,execute
andexecuteScript
at core methods - Familiar NodeJS API
Example
var nodemiral = ;var session = nodemiral; session;
API
Session
Create a session to a remote server. You can invoke following methods after created a session.
@param hostname - hostname or ip addess
@param auth - object containing following fields: `username` and (`password` or `pem`)
@param options - object of options described below
nodemiral.session(hostname, auth, options);
options
:
ejs
- ejs options withejs
fieldsssh
- object whose key and value will be passed as-o key:value
to any ssh session. For example{ 'StrictHostKeyChecking': 'no', 'UserKnownHostsFile': '/dev/null' }
Session Methods
execute
execute given shell command on the remote server.
@param shellCommand - shellCommand
@param options - {onStdout, onStderr}
@param callback - callback containing following parameters
err - err if exists
code - status code of the ssh process
logs - {stdout: 'stdout logs', stderr: 'stderr logs'}
session.execute(shellCommand, callback);
executeScript
execute a local shell script in the remote server. You can template shell script with EJS.
@param localScriptFile - localScriptFile
@param templateVars - variables to the template if uses ejs in the script
@param options - {onStdout, onStderr}
@param callback - callback containing following parameters
err - err if exists
code - status code of the ssh process
logs - {stdout: 'stdout logs', stderr: 'stderr logs'}
session.executeScript(localScriptFile, templateVars, callback);
copy
copy a file from local machine to the remote machine. Supports binary files too. Support EJS templating with non-binary files.
@param localFile - localFile
@param remoteFileLocation - remoteFileLocation
@param options - {onStdout, onStderr}
@param callback - callback containing following parameters
err - err if exists
code - status code of the ssh process
logs - {stdout: 'stdout logs', stderr: 'stderr logs'}
session.copy(localFile, remoteFileLocation, templateVars, callback)