Tag: spawn

如何将parameter passing给nodejs中的.sh文件?

我们可以将parameter passing给Nodejs中的.sh文件,我正在尝试生成一个.sh文件,并且想要在产生时传递一些参数, var command = spawn(__dirname + "/import.sh", { var1: "abc" }); 在上面的命令我试图产卵文件import.sh,也试图传递参数一起,我不知道是否是正确的方法 以及如何检索import.sh文件中的variables值?

Grunt / NodeJs – 在Windows环境下调用ant命令作为产生进程

在一个Windows环境的咕噜生成过程中,我想调用两个ant命令作为产卵进程,以便能够跟踪输出。 它如下所示: grunt.registerTask('app-clean', 'Cleaning tasks', function() { var done = this.async(); if (context.device.platform === 'android' || context.device.platform === 'all') { spawnProcess('ant', ['clean'], { cwd: path.resolve(context.android) }, done); } }); grunt.registerTask('app-build', 'Building tasks', function() { var done = this.async(); if (context.device.platform === 'android' || context.device.platform === 'all') { spawnProcess('ant', ['release'], { cwd: path.resolve(context.android) }, done); } […]

从生成的节点进程中捕获ECONNRESET错误

我正在使用sftps NPM使用用户名/密码authentication连接到SFTP服务器并上传文件。 成功的时候,这个工作很好。 但是,如果提供了无效的身份validation信息,几分钟后会发出ECONNRESET错误,导致整个应用程序崩溃。 查看sftps模块的源代码,它似乎使用child_process.spawn来运行shell命令,并且看起来应该正常捕获任何错误: var sftp = spawn(shellCmd, shellOpts); var data = ""; var error = ""; sftp.stdout.on('data', function (res) { data += res; }); sftp.stderr.on('data', function (res) { error += res; }); function finished(err) { error = error.split('\n').filter(function(line) { if (/^Connected to /.test(line)) return false; return true; }).join('\n'); data = data.split('\n').filter(function(line) { if […]

使用两个命令(使用pipe道|)产生

我正在将文档转换为内存中的pdf(unoconv),并在terminal中打印(pdftotext): unoconv -f pdf –stdout sample.doc | pdftotext -layout -enc UTF-8 – out.txt 工作中。 现在我想用child_process.spawn使用这个命令: let filePath = "…", process = child_process.spawn("unoconv", [ "-f", "pdf", "–stdout", filePath, "|", "pdftotext", "-layout", "-enc", "UTF-8", "-", "-" ]); 在这种情况下,只有第一个命令(在|之前)正在工作。 我可以做我想要的吗? 谢谢。 最新情况: 结果: sh -c- …. bash-3.2$ sh -c- unoconv -f pdf –stdout /Users/fatimaalves/DEV/xx/_input/sample.doc | pdftotext -layout -enc […]

nodejs的spawn和执行使用pdf2swf

我希望有人能够帮助解决这个问题,因为我自己没有得到。 我编译了最新版本的pdf2swf,除了当我想在NodeJS中使用它作为产生的child_process时,一切正常。 当我使用相同的命令作为一个执行,它再次工作。 提供一些代码示例: // convert a pdf to swf using exec (works) var tmpSwfLocation = docsDir+'/Paper.pdf.swf'; var pdf2swf = cp.exec('pdf2swf '+tmpPDFLocation+' -o '+tmpSwfLocation+' -G -v -f -T 9 -t -j '+quality+' -s subpixels='+resolution+' -s storeallcharacters -s poly2bitmap', function(err, stdout, stderr){ console.log(stdout); console.log(stderr); var end = Date.now(); console.log('pdf2swf: SWF created in '+((end-start) /1000)+' seconds'); }); […]

在Node.js中运行带有“spawn”的bash脚本似乎暂停执行一半

下面是我在做什么的要点: https : //gist.github.com/MattCollins84/75f9ebd422ed6d1d5c91 作为一些进程的一部分,我生成了一个bash脚本,里面有大量的curl命令(大约20k个命令)。 我想通过节点运行这个脚本。 我正在使用spawn来做到这一点,它工作正常。 除了70多个命令之后,它就停止了。 由spawn创build的readstream停止输出任何数据。 没有错误,或者任何我能看到的东西。 如果我用“ps x | grep curl”来查看发生的事情,我可以看到进程id刚开始改变,但是似乎在某个时刻停止了,从此再也不会启动了。 这个过程只是挂起。 手动杀死这个过程不会让下一个开始。 此外,与我的bash脚本有关的过程仍然存在,再次,杀死没有任何区别。 观察和我排除的事情: 使用最less的资源 在terminal上运行生成的bash脚本正常工作 似乎并不重要,我curl的URL(即它不是我的应用程序) 我觉得我有一些愚蠢的东西,但是我不知道该怎么去Google弄明白! 我只是希望运行这个文件,就好像我在terminal上一样,但是Node出现了一些限制,以防止它失控。 或者其他的东西。 有任何想法吗?! 谢谢

将CSR的内容直接传递给openssl ca命令而不是文件

我build立了一个使用OpenSSL的证书颁发机构,在我的原型中一切正常。 现在在我要签署证书签名请求(csr)的步骤中,我需要一种不同的方式来调用该命令: 有要求将签名过程的CSR 内容传递给我的openssl命令而不是文件位置,因为我们不想存储它。 企业社会责任内容来自HTTP,这应该在validation后直接传递给命令。 这是一个使用CSR的文件位置的工作示例,但我无法find直接传递内容的方式。 var signCrtCmd = spawn('openssl', [ 'ca', '-config', './openssl.intermediate.cnf', '-extensions', 'server_cert', '-days', '375', '-notext', '-md', 'sha256', '-in', // Instead of the location below I wan't to pass the content './signing_request.pem', '-batch' ]); 我已经阅读了这里的文档OpenSSL CA 感谢您解决这个问题的任何帮助。

node.js child_process git clone在atom中的密码input

我想克隆一个git仓库,在我的atom包中需要node.js的child_process模块​​: var spawn = require('child_process').spawn; var gitClone = spawn('git', ['clone', 'ssh://user@gitrepo.com/path/to/reponame'], {cwd: path}); gitClone.stdout.on('data', (data) => { gitClone.stdin.write('password'); console.log(`stdout: ${data}`); }); gitClone.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); gitClone.on('close', (code) => { console.log(`child process exited with code ${code}`); }); 由于无法使用ssh密钥,所以我需要将用户的密码传递给派生进程。 我想关于这个话题也可以解决我的问题,但似乎没有进入我的gitClone.stdout.on('data', function (data) { … }的可能性。任何console.log()我试图从那里执行,不会显示在Chrome引擎的控制台上。 这是我的输出: stderr: Cloning into 'reponame'… stderr: Permission denied, please […]

shell命令给child_process.spawn(command,,)node.js

基本上,我只是想在节点应用程序上运行rsync命令。 原始的rsync代码如下所示: rsync -r -t -p -o -g -v –progress –delete -l -H /Users/ken/Library/Application Support/Sublime Text 3/Packages /Users/ken/Google Drive/__config-GD/ST3 首先,我试了一下 child_process.exec(command, [options], callback) 但是,由于rsync输出很长,超出了缓冲区。 所以,我试了 child_process.spawn(command, [args], [options]) 相反,和stream.pipe出来。 var spawn = require('child_process') .spawn; var ps = spawn(command1, args1) .stdout .pipe(process.stdout); 虽然这个按预期工作,但是将每个原始的rsync命令拆分成spawn格式太难了。 (我从gRsync工具复制并粘贴命令) 有没有聪明的方法来做到这一点? 谢谢。

spawn()函数的“closures”callback在grunt插件中不起作用

我正在创build一个grunt插件,它广泛使用了grunt.util.spawn函数( http://gruntjs.com/api/grunt.util#grunt.util.spawn )。 我的插件的基本框架如下: 'use strict'; module.exports = function (grunt) { var spawn = require("child_process").spawn; var createCommit = function (text) { var commit = grunt.util.spawn({ cmd: "git", args: ["commit","-a","-m", text] }, function() { console.log("FINISH! FINISH! FINISH!"); }); }; grunt.registerMultiTask("myplugin", "Plugin to commit awesome things", function () { createCommit("0.2.0"); }); }; 不过,当我试图执行这个grunk任务时, console.log("FINISH! FINISH! FINISH!"); 永远不会执行英寸callback…有人可以帮助我呢?