web-dev-qa-db-ja.com

シェルスクリプトまたはpythonスクリプトをAtom electronアプリからスクリプトで呼び出す

Atom電子を使用して、MacとWindowsの両方のデスクトップアプリを作成しようとしています。

私がここで必要なのは:

ボタン。

ユーザーがボタンをクリックすると、次のシェル(またはpythonスクリプト)が実行されます。

ping x.x.x.x

そして、結果はTextAreaに表示されます。

[shelljs]と[yargs]を使用しようとしましたが、Atom electronでは機能しないようです。

私が欲しいのは、JAVASCRIPTを使用してデスクトップアプリケーション(もちろんGUI付き)を記述して、いくつかのスクリプト(シェル&& python)を呼び出していくつかの自動化作業を行うことだけです。

どんな提案でも感謝します、ありがとう:)

13
supersuraccoon

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スクリプトを呼び出さなくても、必要な操作を実行するのに役立つモジュールがたくさんあります。

28
martpie

node-powershellnpmを試してください。シェルスクリプトコマンドを直接実行して結果を表示できます。

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

4
Vishal Shori

次のコードを使用して、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);
2