nodejs simple-s sh невозможно выполнить команды запуска / остановки службы, sh - c виновник? - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь использовать 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()
  }
}
...