Я пытаюсь запустить простой скрипт 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.В таком случае я бы хотел получить данные и преобразовать их в текст.