无法在日志中查找IP地址

时间:2014-04-18 15:36:28

标签: arrays regex bash grep

我正在尝试搜索超过25个日志文件(以.txt格式保存)的文件夹,其中大部分超过500 + MB(一个超过4.5GB),用于超过75种不同IP的实例。我曾尝试编写一个使用数组作为IP的!bash脚本,但它永远不会超越第一个。 Somone建议将所有IP放在txt文件中,然后使用* .txt对文件夹进行grep -f;但是虽然我在Google上搜索和搜索,但我找不到它的例子 希望这里的其他人可以提供帮助..你们一直都是“邪恶”的聪明人,我几乎总能在这里找到答案。提前谢谢。

Ex :(用简单的英语)

日志
文件夹包含27个以上的.txt文件(几乎全部超过500MB)
每个文件都有超过500,000行的博客。例如:

445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com

IP_LIST = 75个唯一的IP(其中一个是“221.33.124.321”,取自上面的示例)

需要在LOGS中搜索IP_LIST中每个IP地址的每个文件,并将输出发送到REPORT.txt的{​​{1}}例如:

logfile.txt + line

感谢您提供的任何帮助。

更新:
IP_LIST(aka:sourceIP.txt)示例:

2013-01-14.txt
445678 14JAN13 221.33.124.321 443 192.168.1.34 /index.htm 200 juser myweb.com

logfile.txt中的内容示例(实际文件都在一个名为LogFiles的目录中,每个日志文件由YYYY-MM-DD.txt命名为收集日期 - 所以2013-01-01.txt,2013 -01-02.txt,2013-01-03.txt等。)

- file 2013-01-01.txt -

5.135.81.16
49.212.143.92
98.126.218.88
168.215.136.66
66.33.212.118

- file 2013-01-03.txt -

66735956    2013-01-01 20:57:26.000 71.171.122.17    GHE                                                192.168.146.109  443        GET        /sites/_themes/Hello/topshape_hello.jpg  NULL                                                                                                                                                                                                                                                             200    myweb\juser                            myweb.com
66735957    2014-01-01 20:57:27.000 71.171.122.17    GHE                                                192.168.146.109  443        GET        /sites/_themes/Hello/bottomshape_hello.jpg  NULL                                                                                                                                                                                                                                                             200    myweb\juser                            myweb.com
66735958    2013-01-01 20:57:28.000 71.171.122.17    GHE                                                192.168.146.109  443        GET        /sites/_themes/Hello/topshape_hello.jpg  NULL                                                                                                                                                                                                                                                             200    myweb\juser                            myweb.com
    middlenav.jsp
66769460    2013-01-01 17:05:38.000 66.33.212.118    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
66769461   2013-01-01 17:05:46.000 46.165.195.139   NULL                                               192.168.100.89   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL

上面有一个非常简短的例子;你应该能够知道我需要如何只有一个输出来报告,因为这些行中的IP与我的IP_LIST中的一个IP匹配。

66789530    2013-01-03 12:07:23.000 49.212.143.92    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
66789531    2013-01-03 17:05:59.000 168.215.136.66   NULL                                               192.168.146.109   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL
66789532    2013-01-03 17:06:44.000 46.165.195.139   NULL                                               192.168.100.89   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL

希望这能解决被问到的问题 格伦 - 当我运行你的剧本时,它给了我的全部是

2013-01-01.txt 66769460    2013-01-01 17:05:38.000 66.33.212.118    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789530    2013-01-03 12:07:23.000 49.212.143.92    NULL                                               192.168.100.89   80         GET        /wp-admin/                                         NULL                                                                                                                                                                                                                                                             302    NULL                                               NULL
2013-01-03.txt 66789531    2013-01-03 17:05:59.000 168.215.136.66   NULL                                               192.168.146.109   80         GET        /                                                  NULL                                                                                                                                                                                                                                                             200    extranet\Anonymous                                 NULL

2 个答案:

答案 0 :(得分:1)

grep -Fwf IP_LIST *.txt > report.out

-F匹配为普通字符串
-w匹配整个单词(因此模式“1.2.3.4”与11.2.3.44不匹配)
-f IP_LIST命名包含模式的文件。

答案 1 :(得分:0)

如果您想在每个文本文件中列出唯一的IP,请尝试使用此bash

#!/bin/bash
for file in *.txt; do
awk '!a[$3]++ {c++} END {print FILENAME,c}'  $file
done