Javascript - 在ssh2连接中访问密码

时间:2016-11-16 18:15:36

标签: javascript exec

我有一个用于连接设备的类。我已经在我的应用程序中创建了类的实例

app.js

myConn = new myConnection();

myConnection.js

function myConnection(){    
     this.settings = {
        host: '192.168.225.195',
        port: 22,
        username: 'sysadmin',
        password: 'pass'
    };
}

我在所述类中有一个函数,它在远程设备上执行命令,但需要密码。当发生这种情况时,执行stderr.on并发送密码和换行符。

myConnection.prototype.installPatch = function(callback){   
    this.conn.exec('sudo -S bash /tmp/update.sh', function(err, stream){
        var standardMsgs = '';
        var errorMsgs = '';
        if(err) throw err;
        stream.on('close', function(code, signal) {                
            callback(standardMsgs, errorMsgs);       
        }).on('data', function(data) {
            standardMsgs += "<br>" + data;
            console.log('STDOUT: ' + data);            
        }).stderr.on('data', function(data) {
            errorMsgs += data;
            console.log('STDERR: ' + data);
            stream.write(myConn.conn.config.password + '\n');
        });
    });    
}

虽然这有效但我不喜欢用

访问密码
stream.write(myConn.conn.config.password + '\n');

因为更改名称&#34; myConn&#34;在app.js中需要在&#34; installPatch&#34;中进行相同的更改。功能。

我打算使用

stream.write(this.settings.password + '\n');

我是否有其他选项可以让我从myConnection类中检索密码?我希望我只是忽略了显而易见的事情。

1 个答案:

答案 0 :(得分:0)

好的,所以我相信它是我的主角。

更改

stream.write(myConn.conn.config.password + '\n');

stream.write(stream._client.config.password + '\n');