我需要在node.js中执行bash脚本.基本上,该脚本将在系统上创建用户帐户.我遇到了这个例子,让我知道如何去做.但是,脚本本身需要用户名,密码和用户真实姓名等参数.我仍然无法弄清楚如何将这些参数传递给脚本执行以下操作:
var commands = data.toString().split('\n').join(' && ');
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何通过ssh连接传递这些参数并在node.js中执行bash脚本.谢谢
hvg*_*des 67
请参阅此处的文档.它是关于如何传递命令行参数的非常具体的.请注意,您可以使用exec或spawn. spawn具有命令行参数的特定参数,而exec您只需将参数作为要执行的命令字符串的一部分传递.
直接来自文档,内联解释注释
var util = require('util'),
spawn = require('child_process').spawn,
ls = spawn('ls', ['-lh', '/usr']); // the second arg is the command
// options
ls.stdout.on('data', function (data) { // register one or more handlers
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
Run Code Online (Sandbox Code Playgroud)
而exec
var util = require('util'),
exec = require('child_process').exec,
child;
child = exec('cat *.js bad_file | wc -l', // command line argument directly in string
function (error, stdout, stderr) { // one easy function to capture data/errors
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
Run Code Online (Sandbox Code Playgroud)
最后,请注意exec缓冲输出.如果要将输出流回客户端,则应使用spawn.
Ano*_*non 10
var exec = require('child_process').exec;
var child = exec('cat *.js | wc -l', function(error, stdout, stderr) {
if (error) console.log(error);
process.stdout.write(stdout);
process.stderr.write(stderr);
});
Run Code Online (Sandbox Code Playgroud)
这种方式更好,因为console.log将打印空白行.
你可以用process.argv.它是一个包含命令行参数的数组.第一个元素将是node第二个元素,它将是JavaScript文件的名称.所有下一个元素都将是您给出的任何其他命令行.
您可以像以下一样使用它:
var username = process.argv[2];
var password = process.argv[3];
var realname = process.argv[4];
Run Code Online (Sandbox Code Playgroud)
或者迭代数组.看一下这个例子:http://nodejs.org/docs/latest/api/all.html#process.argv
| 归档时间: |
|
| 查看次数: |
50229 次 |
| 最近记录: |