Подтвердить что ты не робот

Как вызвать Shell script или python script в приложении Atom

Я пытаюсь использовать электрон Atom для написания приложения для настольных компьютеров для Mac и Windows.

Мне здесь нужно:

Кнопка

A.

И когда пользователь нажимает кнопку, он запускает следующую оболочку (или python script):

ping x.x.x.x

И результат будет отображаться в TextArea.

Я пытался использовать [shelljs] и [yargs], но похоже, что он не работает с атомом Atom.

Все, что я хочу, это использовать JAVASCRIPT для записи Desktop App (с графическим интерфейсом, конечно), который вызывает некоторые script (shell && python) для выполнения некоторых работ по автоматизации.

Любое предложение будет оценено, спасибо:)

4b9b3361

Ответ 1

Это можно сделать напрямую с Node, вы можете использовать модуль child_process. Обратите внимание, что это асинхронно.

const exec = require('child_process').exec;

function execute(command, callback) {
    exec(command, (error, stdout, stderr) => { 
        callback(stdout); 
    });
};

// call the function
execute('ping -c 4 0.0.0.0', (output) => {
    console.log(output);
});

Я также призываю вас взглянуть на npm, здесь есть множество модулей, которые могут помочь вам делать то, что вы хотите, без вызова скрипта Python.

Ответ 2

Попробуйте node -powershell npm. Вы можете напрямую выполнить команды оболочки script и отобразить результат.

var shell = require('node-powershell')
var ps = new shell()
ps.addCommand('ping -c 4 0.0.0.0')
ps.invoke()
.then(function (output) {
    console.log(output)
})
.catch(function (err) {
    console.log(err)
    ps.dispose()
})

Смотрите: https://www.npmjs.com/package/node-powershell

Ответ 3

Вы можете использовать child_process для архивирования того, что вы пытаетесь сделать, используя следующий код

var exec = require('child_process').exec
function Callback(err, stdout, stderr) {
    if (err) {
        console.log('exec error: ${err}');
        return;
    }else{
        console.log('${stdout}');
    }
}

res = exec('ping xxx.xxx.xxx', Callback);

Ответ 4

Есть ли кроссплатформенная функция, которая выполняет команды системной оболочки?