Не удается подключиться к серверу SSH через узел (программно), используя дочерний процесс порождения - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь запустить простой скрипт bash в node.js, чтобы я мог читать и писать из него, и у меня возникли трудности.Вот простой маршрут, который у меня есть в node.js:

router.post('/initiateSSH', function(req, res, next) {
    console.log('inside /initiateSSH')
    var shellpath = path.join(__dirname, 'SSH.sh')

    const runCmd = (cmd) => {
      return new Promise((resolve, reject) => {
        var spawn = require('child_process').spawn
        var child = spawn(shellpath)
        var resp = ''
        child.stdout.on('data', function (buffer) { resp += buffer.toString() })
        child.stderr.on('data', function(data){console.log('error: ', data.toString())})
        child.stdout.on('close', function () { resolve(resp) })
      })
    }

    runCmd().then(ret => console.log(ret))
}

И скрипт, который я называю:

#!/bin/bash
sshpass -p rocks ssh -tt jorgrun@crawl.jorgrun.rocks

Так что, если вы перейдете по этому адресу в терминале, это будетвойдите в игру, похожую на roguelike.Если вы попытаетесь программно вызвать этот bash-файл, он ничего не отобразит (ошибки тоже нет).Я убедился, что файл bash является исполняемым (SSH.sh).

Не уверен, что это может быть - это похоже на правильный способ сделать это из всего, что я читал в Интернете.У меня даже есть флаг -tt для интерактивных сценариев.

Кто-нибудь видит, что я делаю неправильно?


ПРИМЕЧАНИЯ


  • Кто-то упомянул, что это может бытьпотому что игра загружает графический интерфейс, используя то, что называется curses или ncurses.В таком случае я бы хотел получить данные и преобразовать их в текст.
...