【问题标题】:nodejs for linux server programming / as scripting languagenodejs 用于 linux 服务器编程 / 作为脚本语言
【发布时间】:2016-06-23 23:12:07
【问题描述】:

我正在编写一个脚本来为我的应用程序配置新用户。 脚本将在节点中编写,因为它的任务之一是连接到 mysql 以在应用程序的数据库中创建新用户。

我尝试使用 spawn-sync 库(令人惊讶地似乎也是异步的)来执行 bash 命令,但是我需要执行以下每一个命令:

var spawnSync = require('spawn-sync');
var user_name = process.argv[2];

new Promise((resolve)=>{

    var result = spawnSync('useradd',[user_name]);
    if (result.status !== 0) {

        process.stderr.write(result.stderr);
        process.exit(result.status);

    } else {

        process.stdout.write(result.stdout);
        process.stderr.write(result.stderr);

    }

    resolve()

}).then(new Promise(function(resolve){

    // execute another part of script
    resolve()
})

有没有更好的方法来做到这一点?每当我尝试查找某些内容时,网络上的所有教程似乎都只在谈到 nodejs 上下文时谈论 express。

或者您可能不鼓励将 nodejs 用作脚本服务器端语言?

【问题讨论】:

    标签: javascript node.js bash ubuntu server


    【解决方案1】:

    如果您想与进程同步交互,Node.js 通过child_process.execSync() 内置了该功能。请注意,如果子进程有一个非零退出代码,它将抛出(因此您需要用 try/catch 包装它)。

    try {
      var cmd = ['useradd', user_name].join(' ');
      var stdout = require('child_process').execSync(cmd);
      console.log(stdout);
    }
    catch (e) {
      console.log(e);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 2011-09-08
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多