grep表示在多个文件中匹配的模式

grep表示在多个文件中匹配的模式,grep,access-log,Grep,Access Log,我正在使用grep分析攻击后的日志文件。 通常是这样 grep -F "POST /xxxxx.php" ./access-log 现在有人攻击了我的一些网站,但我不知道漏洞在哪里,也不知道攻击者的ip地址是什么。现在我想找到一个ip地址,他向我的多个网站发送了请求,如下所示: abcde.com-log:123.123.123.123 - - [12/Jan/2013:08:41:08 +0100] "POST /xxxxx.php HTTP/1.1" 200 1234 "-" "-" w

我正在使用grep分析攻击后的日志文件。 通常是这样

grep -F "POST /xxxxx.php" ./access-log
现在有人攻击了我的一些网站,但我不知道漏洞在哪里,也不知道攻击者的ip地址是什么。现在我想找到一个ip地址,他向我的多个网站发送了请求,如下所示:

abcde.com-log:123.123.123.123 - - [12/Jan/2013:08:41:08 +0100] "POST /xxxxx.php HTTP/1.1" 200 1234 "-" "-"

wxyz.com-log:123.123.123.123 - - [12/Jan/2013:08:41:08 +0100] "POST /xxxxx.php HTTP/1.1" 200 1234 "-" "-"

但是我不知道如何让grep或其他unix工具只提供匹配项,匹配者不止一个日志文件。

假设您想要的IP地址是每个日志文件中显示为第一个字段的IP地址,请尝试以下操作:

awk '
   /POST \/xxxxx\.php/ {
      ip=$1
      if ( !(ipFilePairs[ip,FILENAME]++) ) {
         ipFileCnt[ip]++
         ipFileList[ip] = ipFileList[ip] " " FILENAME
      }
   }
   END {
      for (ip in ipFileCnt)
         if (ipFileCnt[ip] > 1)
            print ip ":" ipFileList[ip]
   }
' *.log

由于您不知道漏洞在哪里,您可以提供哪些特征来识别攻击请求?它总是一个POST请求吗?总是指向.php文件吗?如果没有这些数据,你也可以在你的两个站点的robots.txt中找到谷歌机器人。