2015-10-13 102 views
-1

我不熟悉awk,我不知道从哪里开始..基本上我试图从/var/log/audit/audit.log提取特定数据的数据是IP地址,但它们必须是独特的,意思是不重复的,它们必须被排序,并且我需要计算出现次数。这一切都可能一步到位吗?我想在html中创建一个两列表,其中一个具有ip地址,而另一个具有发生次数。AWK计数/排序/唯一audit.log CentOS 7

这里是awk命令我到目前为止..

cat audit.log | awk ' 
    { 
     match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) 
     ip = substr($0, RSTART, RLENGTH) 
     print ip 
    } 
' 

这个命令只是打印出一百万的IP地址,有人可以帮我吗?即时与awk混淆。

这里是由sshd守护进程使用audit.log文件的例子:

exe="/usr/sbin/sshd" hostname=10.10.125.30 addr=45.60.145.130 terminal=ssh res=success' 
    type=USER_LOGOUT msg=audit(1444401905.624:127): pid=1862 uid=0 auid=0 ses=1 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=102.10.145.130 addr=45.20.120.10 terminal=ssh res=success' 
    type=USER_LOGIN msg=audit(1444401905.627:128): pid=1862 uid=0 auid=0 ses=1 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=102.30.145.130 addr=45.60.45.120 terminal=ssh res=success' 
    type=USER_START msg=audit(1444401905.627:129): pid=1862 uid=0 auid=0 ses=1 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=102.60.145.130 addr=108.60.145.130 terminal=ssh res=success' 
    type=CRYPTO_KEY_USER msg=audit(1444401905.629:130): pid=18799 uid=0 auid=0 ses=1 msg='op=destroy kind=server fp=93:e4:a2:20:d9:41:44:1b:8a:ee:53:d8:c3:d5:06:27 direction=? spid=18799 suid=0 exe="/usr/sbin/sshd" hostname=? addr=108.60.145.130 terminal=? res=success' 
    type=CRYPTO_KEY_USER msg=audit(1444401905.629:131): pid=18799 uid=0 auid=0 ses=1 msg='op=destroy kind=server fp=f7:07:aa:ec:70:56:0f:e9:a9:24:25:97:53:4c:fb:1f direction=? spid=18799 suid=0 exe="/usr/sbin/sshd" hostname=? addr=18.20.125.130 terminal=? res=success' 

thanks 
+0

你能举一个输入文本的例子吗?这可以让不直接熟悉CentOS的人也可以发布答案。 – rightfold

+0

将'| sort | uniq -c'添加到脚本不够吗? (这是计数一步?) –

+0

我添加了一些输入文本,所以你可以看到 – johndoe11710

回答

0

您可以尝试类似:

awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' audit.log|sort -u 

你举的例子输出:

10.10.125.30 
102.10.145.130 
102.30.145.130 
102.60.145.130 
108.60.145.130 
18.20.125.130 
+0

我还需要每个IP地址的出现次数。 – johndoe11710

+1

cat audit.log | awk'{match($ 0,/ [0-9] + \。[0-9] + \。[0-9] + \。[0-9] + /); ip = substr($ 0,RSTART,RLENGTH);打印ip}'| sort -n | uniq -c | sort -nr |头-20 – johndoe11710