Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 需要做一个端口检测器吗_Apache_Networking_Port_Daemon_Netstat - Fatal编程技术网

Apache 需要做一个端口检测器吗

Apache 需要做一个端口检测器吗,apache,networking,port,daemon,netstat,Apache,Networking,Port,Daemon,Netstat,我正在尝试做一个服务,它可以检测端口何时被占用。 因此netstat-lntu | grep tcp可以列出所有占用的端口。因此,第一个netstatexecution的输出与a端口被占用后的输出之间的差异可以得到端口值 它需要完全自动化,所以我做了一个无限循环,它将持续检查两个连续的netstat之间的差异 这是我在js中的代码,我正在使用: 现在这个东西工作得很好,但是资源很重。那么,有没有一种方法可以让它变得轻松,或者有一种全新的更有效的方法来解决这个问题呢?您需要什么频率来进行验证?如果

我正在尝试做一个服务,它可以检测端口何时被占用。 因此
netstat-lntu | grep tcp
可以列出所有占用的端口。因此,第一个
netstat
execution的输出与a端口被占用后的输出之间的差异可以得到端口值

它需要完全自动化,所以我做了一个无限循环,它将持续检查两个连续的
netstat
之间的差异

这是我在js中的代码,我正在使用:


现在这个东西工作得很好,但是资源很重。那么,有没有一种方法可以让它变得轻松,或者有一种全新的更有效的方法来解决这个问题呢?

您需要什么频率来进行验证?如果您的循环持续运行,它将消耗您的CPU。您可以在每个循环之间添加一个睡眠,以减少对服务器的影响,并且仍然可以得到符合您需要的结果。我需要在端口被占用时立即检测端口。因此,也许可以使用某种事件触发器来代替循环?请查看以下内容:。显然,iptables和snort可以提供帮助。
var shell = require("shelljs");
var InfiniteLoop = require("infinite-loop");
var il = new InfiniteLoop();
var diff = require('diff');

var oldStr = '';
var newStr = '';

shell.exec("netstat -lntu | grep tcp",{silent:true}, function (code, output, error) {
  oldStr = output;      
});

il.add(function () {
  shell.exec("netstat -lntu | grep tcp",{silent:true}, function (code, output, error) {
    newStr = output;
    if(!newStr.replace(oldStr,'')==''){
     var dD = diff.diffChars(oldStr, newStr)[1];
     if(dD.added){
       let value = dD.value.replace(/\n/g,'');
       re = /[0-9][0-9][0-9][0-9]/
       value = re.exec(value);
       console.log(value[0]);
     }
    }
    oldStr = newStr;
  });
});

il.run();