1

我试图构建一个命令行应用程序,以便阻止一个 ip(或其他)我不需要更新 conf 文件。为此,我需要在 conf 文件的特定位置插入带有 ip 的特定代码行。我知道 CLI 部分。有人可以帮我处理插入部分吗?我写的代码如下,但是写的是乱码!!

#!/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 () {})
          };
       });
    }
});
4

1 回答 1

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');
  }
});
于 2013-09-05T06:23:28.323 回答