SSH and SFTP tasks for Grunt.
This plugin requires Grunt ~0.4.0
This library provides two Grunt tasks for ssh:
- sftp
- sshexec
This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that you upgrade, but in case you can't please use v0.1.0.
// don't keep passwords in source control
secret: grunt.file.readJSON('secret.json'),
sftp: {
test: {
files: {
"./": "*json"
},
options: {
path: '/tmp/',
host: '<%= secret.host %>',
username: '<%= secret.username %>',
password: '<%= secret.password %>'
}
}
},
sshexec: {
test: {
command: 'uptime',
options: {
host: '<%= secret.host %>',
username: '<%= secret.username %>',
password: '<%= secret.password %>'
}
}
}
Or, specifying SSH configurations for re-use, and referencing from tasks:
// don't keep passwords in source control
sshconfig: {
"myhost": grunt.file.readJSON('myhost.json')
},
sshexec: {
test: {
command: 'uptime',
options: {
config: 'myhost'
}
},
ls: {
command: 'ls -la',
options: {
config: 'myhost'
}
}
}
Or, specifying SSH configuration at runtime as a command line option:
$ grunt sshexec:someTask --config myhost
Copies one or more files to a remote server over ssh.
Inside your grunt.js
file add a section named sftp
.
The files to copy. Should contain key:value pairs.
The path on the remote server. Defaults to home.
Options for minimatch.
The username to authenticate as on remote system.
The password to authenticate on remote system.
A string containing the contents of the private key to use to authenticate with the remote system, you can load this from a file using grunt.file.read
. Be careful you don't put this into source control unless you mean it!
options: {
privateKey: grunt.file.read("id_rsa"),
passphrase: <%= secret.passphrase %>
}
A string containing path to a private key to use to authenticate with the remote system. Useful when same Gruntfile.js is used by multiple users with their own keys.
options: {
privateKeyPath: <%= secret.keypath %>,
passphrase: <%= secret.passphrase %>
}
The passphrase to use with the privateKey
or privateKeyPath
. As per the privateKey
, do not expose this in your Gruntfile or anywhere that'll end up public unless you mean it, load it from an external file.
The remote host to copy to, set up in your ~/.ssh/config
.
The remote port, optional, defaults to 22
.
Optionally strip off an initial part of the file when performing the SFTP operation. This is a string operation, so trailing slashes are important.
For example:
/* [...] */
files: {
"./": "dist/**"
},
options: {
path: '/tmp/',
/* [...] */
srcBasePath: "dist/"
Would SFTP the files in dist directly into tmp (eg. dist/index.html
==> /tmp/index.html
)
Optionally check whether the directories files will be sftp'd to exist first. This can take a bit of extra time as directories need to be checked, so this option is disabled by default.
See also the directoryPermissions
option.
The permissions to apply to directories created with createDirectories. The default is 0755. JSHint will probably yell at you unless you set this using parseInt
:
directoryPermissions: parseInt(755, 8)
Runs a command over ssh.
Inside your grunt.js
file add a section named sshexec
.
The command to run.
The username to authenticate as on remote system.
The password to authenticate on remote system.
The remote host to copy to, set up in your ~/.ssh/config
.
The remote port, optional, defaults to 22
.
- 2013/05/11 - v0.4.0 - Support defining and referencing ssh configurations. (Anders Johnson).
- 2013/05/07 - v0.3.3 - Fix encoding issues. (John Wright).
- 2013/05/07 - v0.3.2 - Fix race condition when uploading larger files. (John Wright).
- 2013/03/25 - v0.3.1 - Fix race condition when uploading multiple files. (John Wright).
- 2013/02/27 - v0.3.0 - Support private key based authentication; Allow sftp to make directories if they do not exist. (marcins).
- 2013/02/26 - v0.2.1 - Add
srcBasePath
option tosftp
(marcins). - 2013/02/20 - v0.2.0 - Update for grunt 0.4.x.
- 2013/02/13 - v0.1.0 - Initial release with sshexec and sftp tasks.
Copyright (c) 2013 Andrew Jones Licensed under the MIT license.