使用awk,IP和登录解析Filezilla日志

时间:2014-01-10 21:02:09

标签: regex awk filezilla

我正在尝试从FileZilla日志中提取用户名和他们登录的IP地址列表。

(000099) 11/29/2013 9:20:26 AM - user_one (145.194.40.65)> 230 Logged on

我已经获得了所有拥有有效登录名的IP列表:

cat FileZilla\ Server.log | grep "Logged on" | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | sort | uniq -c

但是如何匹配用户名和IP地址?因此,完成后输出看起来像这样:

5 user_one 10.1.1.1
3 user_one 10.5.1.1
2 user_two 10.1.1.1
3 user_two 10.8.8.8

我花了几个小时在这一个,所以任何提示或技巧将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下命令:

gawk -f a.awk FileZilla\ Server.log

其中a.awk是:

/Logged on/{
    match($0,/[0-9]?[0-9]:[0-9][0-9]:[0-9][0-9] .. . ([^ ]*) \(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\)/,a)
    b[(a[1]" "a[2])]++
}
END {
    for (i in b) {
        print b[i], i
    }
}

如果要对结果进行排序,可以使用PROCINFO["sorted_in"]作为

在Gnu Awk第4版中完成
END {
    PROCINFO["sorted_in"]="@ind_str_asc"
    for (i in b) {
        print b[i], i
    }
}