Кажется, есть проблема с модулем simple-ssh
, когда обратный вызов запускается несколько раз при использовании в цикле.Это подтверждается в выпуске github здесь .Также кажется, что модуль в данный момент не находится в активной разработке.
Хотя я не уверен, почему это происходит, но в случае simple-ssh
функция exec
добавляет команду в стек.Поскольку вы используете общий объект соединения ssh
, при следующем вызове старая команда все еще существует в стеке.Затем функция start
выполняет весь стек.
Модуль внутренне использует более старую версию модуля ssh2
.Вы можете использовать этот модуль непосредственно в вашем случае.
npm install ssh2
var Client = require('ssh2').Client;
router.post('/script', function (req, res, next) {
res.json({
'some json': 'To be send'
})
next()
}, function (req, res) {
var conn = new Client();
conn.on('ready', function () {
conn.exec('echo $PATH', function (err, stream) {
if (err) throw err;
stream.on('data', function (data) {
console.log('STDOUT: ' + data);
}).on('close', function (code, signal) {
conn.end();
})
});
}).connect({
host: 'localhost',
username: 'user',
password: 'password'
});
})