@@ -6,6 +6,15 @@ var exec = require('child_process').exec;
6
6
7
7
var scp = module . exports = { } ;
8
8
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
+ }
9
18
/*
10
19
* Transfer a file to a remote host
11
20
*/
@@ -15,7 +24,7 @@ scp.send = function (options, cb) {
15
24
'-r' ,
16
25
'-P' ,
17
26
( options . port == undefined ? '22' : options . port ) ,
18
- '-o "ControlMaster no"' , //callback is not fired if ssh sessions are shared
27
+ buildSshOptions ( options ) ,
19
28
options . file ,
20
29
( options . user == undefined ? '' : options . user + '@' ) + options . host + ':' + options . path ,
21
30
] ;
@@ -32,12 +41,14 @@ scp.send = function (options, cb) {
32
41
* Grab a file from a remote host
33
42
*/
34
43
scp . 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 ;
35
46
var command = [
36
47
'scp' ,
37
48
'-r' ,
38
49
'-P' ,
39
50
( options . port == undefined ? '22' : options . port ) ,
40
- '-o "ControlMaster no"' , //callback is not fired if ssh sessions are shared
51
+ buildSshOptions ( options ) ,
41
52
( options . user == undefined ? '' : options . user + '@' ) + options . host + ':' + options . file ,
42
53
options . path
43
54
] ;
0 commit comments