2013-09-05 2 views
1

나는 명령 줄 응용 프로그램을 만들려고 했으므로 IP (또는 무엇이든)를 차단하기 위해 conf 파일을 업데이트 할 필요가 없습니다. 이를 위해 conf 파일의 특정 위치에 ip와 함께 특정 코드 행을 삽입해야합니다. CLI 부분을 알고 있습니다. 아무도 나를 삽입 부분으로 도와 드릴까요? 다음과 같이 코드를 작성했지만 일부 횡설수설을 쓰고 있습니다 !!Node.js : 텍스트 파일의 특정 줄 다음에 줄을 삽입 하시겠습니까?

#!/usr/bin/env node 
var cli = require('cli'); 
var fs = require('fs'); 
cli.parse({ 
    block: ['b', 'Block the ip:port'], 
    ip: ['i', 'provide ip address', 'string', ''], 
    port: ['p', 'provide port number', 'int', 0], 
}); 

cli.main(function(args, options) 
{ 
    if(options.block) 
    { 
     fs.readFile('nginx.conf', function(err, data) { 
      if(err) throw err; 
      data = data.toString(); 
      var array = data.toString().split("\r\n"); 

      array[4] ='deny ' + cli.getValue(options.ip) + ':' + cli.getValue(options.port); 
      for(i = 0; i < array.length ; i++) { 
      fs.writeFile('nginx1.conf', array[i]+'\r\n', function() {}) 
      }; 
     }); 
    } 
}); 

답변

0

for 루프의 콜백은 좋지 않습니다. 이 코드를 사용해보십시오 -

fs.readFile('nginx.conf', function(err, data) { 
    if(err) throw err; 
    //data = data.toString(); 
    var array = data.toString().split("\n"); 

    array[4] ='deny '+cli.getValue(options.ip)+':'+cli.getValue(options.port); 
    for(i=0;i<array.length;i++) { 
    fs.appendFileSync('nginx1.conf', array[i]+'\n'); 
    } 
}); 
관련 문제