我使用的是ssh2 nodejs client(https://github.com/mscdex/ssh2)
我试图执行以下操作:
我在第3步失败了。
这是我的代码
var Client = require('ssh2').Client;
var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
conn.exec('sudo docker ps', {pty: true}, function(err, stream) {
if (err) throw err;
stream.on('close', function(code, signal) {
conn.end();
// data comes here
}).on('data', function(data) {
console.log('STDOUT: ' + data);
}).stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
// stream.end(user.password+'\n');
^^ If i do this, it will work but I won't be able to do anything else afterwards
});
}).connect({
host: 'demo.landingpage.com',
username: 'demo',
password: 'testuser!'
});
如何以编程方式输入密码? (我在执行{pty: true}
conn.exec
了
请指教!
答案 0 :(得分:1)
假设您的stream
是双工流,您可以通过编写
.on('data', (data) => {
stream.write(user.password+'\n');
}
或者您可以使用cb函数
function write(data, cb) {
if (!stream.write(data)) {
stream.once('drain', cb);
} else {
process.nextTick(cb);
}
}
和
.on('data', (data) => {
write(user.password+ '\n', () => {
console.log('done');
}
});