Я пытаюсь использовать nodejs simple-s sh для запуска и остановки служб на удаленном сервере.
Например:
service httpd start
Когда команда simple-s sh запускает команду, она получает правильный вывод, однако служба на самом деле не запускается.
Просмотр этого кроме того, я обнаружил, что simple-s sh фактически выполняет:
sh -c 'service httpd start'
Ручное выполнение команды service
внутри sh -c
вызывает ту же проблему.
Кто-нибудь знает, что мешает правильное выполнение служебных команд с использованием sh -c
и как получить simple-s sh, чтобы можно было успешно выполнить команду service
или, если есть решение этой проблемы?
Пример кода:
const SSH = require('simple-ssh')
module.exports = {
newSession() {
var ssh = new SSH({
host: host,
user: user,
pass: pass
})
return ssh
},
execute() {
var ssh = this.newSession()
var res = {
status: false,
data: null,
msg: ''
}
ssh
.exec('service httpd start', {
pty: true,
out: function(stdout) {
res.status = true
res.msg = 'success'
res.data = stdout
return res
},
err: function(stderr) {
res.status = false
res.msg = 'failure'
res.data = stderr
return res
},
exit: function(error) {
console.log(error)
}
})
.start()
}
}