2015-02-10 4 views
1

Iam пытается выполнить команду терминала с помощью Node.js нерествыполнить команду терминала с помощью Node.js

для этого я использую код

console.log(args) 

var child = spawn("hark", args, {cwd: workDir}); 
     child.stdout.on('data', function(data) { 

      console.log(data.toString())   
     }); 

     child.stderr.on('data', function(data) { 
      console.log('stdout: ' + data); 

     }); 

     child.on('close', function(code) { 
      console.log('closing code: ' + code); 

     }); 

But it treated greater than>as string «>» и получать выход в

tshark: Invalid capture filter "> g.xml" 

    That string isn't a valid capture filter (syntax error). 
    See the User's Guide for a description of the capture filter syntax. 

Как я могу использовать > без строки

+0

'> ggggg.xml' - это синтаксис оболочки для перенаправления stdout в файл. Вы должны использовать правильные варианты spawn http://nodejs.org/api/child_process.html#child_process_options_stdio или использовать 'child_process.exec', который вызовет оболочку. –

ответ

2

Вы можете использовать потоки файлов, чтобы поместить весь вывод с порожденного hark в g.xml.
Пример:

// don't need ">" in args 
var args = [' 02:00:00:00' ,'-s','pdml'], 
    logStream = fs.createWriteStream('./xml'); 

var spawn = require('child_process').spawn, 
    child = spawn('tshark', args); 

child.stdout.pipe(logStream); 
child.stderr.pipe(logStream); 

child.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
}); 

Из child здесь есть поток, вы можете просто труба его в свой вошедшего поток файла.

+0

да еще одна вещь..ур кодирование работает..баут не выдал действительный файл xml .... некоторые атрибуты отсутствуют – Psl

+0

Попробуйте сыграть с опциями: http://nodejs.org/api/fs.html #fs_fs_createreadstream_path_options –

+0

это поток createread ... мог бы у вас обновить ответ – Psl

 Смежные вопросы

  • Нет связанных вопросов^_^