btmp日志提取工具

    工作中总是需要查询btmp日志,但使用lastb命令没有办法指定时间段,所以就看了一下lastb命令的源码,结合utmp结构体写了这个小工具。代码点击这里
    目前只用到了btmp.h和generate_logfile.c,有这2个文件即可编译运行。server.c和client.c可以用于传输提取好的文件,采用c/s架构,虽然能用,但不方便,我还需要仔细思考,继续完善。

工具作用

    如果需要提取特定时间段的btmp日志,可以使用该工具。

使用方法

  1. 确认btmp日志的路径,默认为/var/log/btmp,如不为该路径,在generate_logfile.c中自定义路径;
  2. 编译运行,输入timestamp格式的起止时间
# gcc generate_logfile.c -o generate_logfile
# ./generate_logfile 
Please input the starttime(timestamp) :1612165251
Please input the endtime(timestamp) :1612165427
1612165251      6       0       ba      181.48.46.195
1612165292      6       0       root    v118-27-6-78.3eg2.static.cnode.io
1612165313      6       0       root    199.195.253.25
1612165383      6       0       jf      postfix11.itp.net
1612165385      6       0       jf      postfix11.itp.net
1612165401      6       0       pashm   118.25.27.67
1612165403      6       0       pashm   118.25.27.67
1612165424      6       0       db      182.254.168.205
1612165425      6       0       qe      181.48.46.195
1612165426      6       0       db      182.254.168.205
1612165427      6       0       qe      181.48.46.195
1612165251      6       0       ba      181.48.46.195
1612165292      6       0       root    v118-27-6-78.3eg2.static.cnode.io
1612165313      6       0       root    199.195.253.25
1612165383      6       0       jf      postfix11.itp.net
1612165385      6       0       jf      postfix11.itp.net
1612165401      6       0       pashm   118.25.27.67
1612165403      6       0       pashm   118.25.27.67
1612165424      6       0       db      182.254.168.205
1612165425      6       0       qe      181.48.46.195
1612165426      6       0       db      182.254.168.205
1612165427      6       0       qe      181.48.46.195

    可以看到,由于btmp的两个函数分别都使用了printf,所以最终结果打印了两遍。

  1. 生成binlog.txt和filelog.txt。
# cat filelog.txt 
1612165251      6       0       ba      181.48.46.195
1612165292      6       0       root    v118-27-6-78.3eg2.static.cnode.io
1612165313      6       0       root    199.195.253.25
1612165383      6       0       jf      postfix11.itp.net
1612165385      6       0       jf      postfix11.itp.net
1612165401      6       0       pashm   118.25.27.67
1612165403      6       0       pashm   118.25.27.67
1612165424      6       0       db      182.254.168.205
1612165425      6       0       qe      181.48.46.195
1612165426      6       0       db      182.254.168.205
1612165427      6       0       qe      181.48.46.195

    binlog.txt的内容是二进制数据,跟btmp日志内容一样,filelog.txt的内容便于阅读。第1列表示timestamp时间;第2列表示utmp结构体的类型,其中6表示登录会话,详情参考/usr/include/bits/utmp.h;第3列表示远程主机的Internet地址,我也不知道为什么总是0;第4列表示登陆用户名;第5列表示主机名。

猜你喜欢

转载自blog.csdn.net/zsx0728/article/details/113608355