@@ -6,6 +6,15 @@ var exec = require('child_process').exec;
66
77var scp = module . exports = { } ;
88
9+ function buildSshOptions ( options ) {
10+ result = '' ;
11+ var ssh_options = options . ssh_options || { }
12+ ssh_options [ 'ControlMaster' ] = 'no'
13+ Object . keys ( ssh_options ) . map ( function ( key ) {
14+ result += "-o " + key + '=' + ssh_options [ key ] + ' '
15+ } )
16+ return result . trim ( ) ;
17+ }
918/*
1019 * Transfer a file to a remote host
1120 */
@@ -15,7 +24,7 @@ scp.send = function (options, cb) {
1524 '-r' ,
1625 '-P' ,
1726 ( options . port == undefined ? '22' : options . port ) ,
18- '-o "ControlMaster no"' , //callback is not fired if ssh sessions are shared
27+ buildSshOptions ( options ) ,
1928 options . file ,
2029 ( options . user == undefined ? '' : options . user + '@' ) + options . host + ':' + options . path ,
2130 ] ;
@@ -32,12 +41,14 @@ scp.send = function (options, cb) {
3241 * Grab a file from a remote host
3342 */
3443scp . get = function ( options , cb ) {
44+ var ssh_options = [ "ControlMaster=no" ] ; //callback is not fired if ssh sessions are shared
45+ ssh_options = options . ssh ? ssh_options . concat ( options . ssh ) : ssh_options ;
3546 var command = [
3647 'scp' ,
3748 '-r' ,
3849 '-P' ,
3950 ( options . port == undefined ? '22' : options . port ) ,
40- '-o "ControlMaster no"' , //callback is not fired if ssh sessions are shared
51+ buildSshOptions ( options ) ,
4152 ( options . user == undefined ? '' : options . user + '@' ) + options . host + ':' + options . file ,
4253 options . path
4354 ] ;
0 commit comments