从路由器日志文件中提取时间和IP地址

时间:2014-09-10 00:50:13

标签: logging sed router extraction

我有一个DD-WRT路由器,它将日志文件转发到GNOME的系统日志查看器,它运行良好。我遇到的问题是路由器发送了更多我想跟踪的信息:

Sep  9 20:41:17 192.168.1.1 kernel: [  272.160000] ACCEPT IN=br0 OUT=ppp0 MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=192.168.1.5 DST=64.233.160.0 LEN=104 TOS=0x00 PREC=0x00 TTL=63 ID=31811 DF PROTO=UDP SPT=42633 DPT=3000 LEN=84

如何将其减少到DatetimeACCEPTSRC=IPDST=IP

ACCEPT也可以是DROPREJECT

作为我尝试的实验:

sed 's/.*SRC=\([0-9.]\+\).*/\1/' -e 's/.*DST=\([0-9.]\+\).*/\1/' myrouter.log

所有这一切都创建了一个很长的SRC IP列表,然后是DST IP的长列表。理想情况下,我希望将它们放在日志查看器的同一行上。

2 个答案:

答案 0 :(得分:1)

简单方法:

awk '{print $1,$2,$3,$8,$12,$13}' myrouter.log
Sep 9 20:41:17 ACCEPT SRC=192.168.1.5 DST=64.233.160.0

删除标签:

awk '{split($12,a,"=");split($13,b,"=");print $1,$2,$3,$8,a[2],b[2]}' myrouter.log
Sep 9 20:41:17 ACCEPT 192.168.1.5 64.233.160.0

答案 1 :(得分:0)

sed -n 's/^\([a-zA-Z0-9 ]\{6,7\}[0-9:]\{8\} \).* \([ACCEPTDROPJ] \).*\(\([SRCDT]\{3\}=[0-9.]\{7,15\} *\)\{2\}\).*/\1\2\3/p'  YourFile

使用-n过滤与此结构不对应的行。 Rest是纯模式匹配和组

如果信息总是在同一个地方,那么其他工具(特别是AWK)在这种情况下更快更容易使用