首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SunOS上一次wtmp解析

SunOS上一次wtmp解析
EN

Stack Overflow用户
提问于 2014-01-02 16:42:20
回答 1查看 188关注 0票数 0

我有一个perl脚本,用于解析wtmp文件,将所有用户的时间添加到一起,并删除错误的数据。这个脚本在我最新的/最新的系统上运行得非常好。然而,我有一个较老的系统,一个Sparc 3000运行Solaris 8我相信。这东西比你知道的更让我头疼。所以,我试着让我的用户及时登录,并将输出格式化如下-

代码语言:javascript
复制
bbarret8 316
cchang5 703
ccomanes 2267
ckeefe 24
cmeyer7 82
dbabbini 140

我使用的perl脚本在这里http://pastebin.com/ayN1yMJU

我的输入是这样的(还有更多的条目)-

代码语言:javascript
复制
lwoods4   console      :0               Mon Dec 30 14:08 - 14:22  (00:14)
dhesek    console      :0               Mon Dec 30 09:51 - 09:53  (00:01)
lwoods4   console      :0               Sun Dec 29 15:06 - 15:16  (00:09)
dhesek    console      :0               Sun Dec 29 09:26 - 09:30  (00:04)
dhesek    console      :0               Fri Dec 27 16:15 - 16:17  (00:01)
ylin7     console      :0               Fri Dec 27 15:24 - 16:04  (00:40)
lwoods4   console      :0               Fri Dec 27 14:11 - 14:25  (00:13)
lwoods4   console      :0               Fri Dec 27 11:18 - 11:35  (00:17)
dhesek    console      :0               Thu Dec 26 13:21 - 14:38  (01:16)
dhesek    console      :0               Wed Dec 25 14:20 - 14:23  (00:02)
sbrown3   console      :0               Tue Dec 24 14:40 - 14:53  (00:12)
dhesek    console      :0               Tue Dec 24 09:21 - 09:25  (00:04)
sbrown3   console      :0               Mon Dec 23 11:20 - 12:20  (00:59)
ylin7     console      :0               Sun Dec 22 21:44 - 22:00  (00:16)
sbrown3   console      :0               Sat Dec 21 15:05 - 16:18  (01:12)
kwatson2  console      :0               Fri Dec 20 18:41 - 19:03  (00:22)

我的输出-

代码语言:javascript
复制
# ./Varian.wtmp.last.pl 
0 1
jvail1 19
kwatson2 22
mm 1
nmrext0 21

这是因为脚本正在调用当前系统上的“最后”命令来解析来自Solaris系统的输出文件吗?在我看来它们是一样的,但也许它们不是。任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-02 17:10:06

看到这两项产出将是有帮助的。检查匹配的+,这是可选的,现在(当解析天)。

代码语言:javascript
复制
use strict;
use warnings;

my %TIMES;
while (<DATA>) {
    if (my($name,$days,$hours,$mins) = /^(\w+).+\((?:(\d+)\+?)?(\d+):(\d+)/) {
        #                                 '+' is optional __^ 

        $TIMES{$name} += 1440 * $days + 60 * $hours + $mins;
    }
}
foreach (sort keys %TIMES) {
    print "$_ $TIMES{$_}\n";
}
__DATA__
lwoods4   console      :0               Mon Dec 30 14:08 - 14:22  (00:14)
dhesek    console      :0               Mon Dec 30 09:51 - 09:53  (00:01)
lwoods4   console      :0               Sun Dec 29 15:06 - 15:16  (00:09)
dhesek    console      :0               Sun Dec 29 09:26 - 09:30  (00:04)
dhesek    console      :0               Fri Dec 27 16:15 - 16:17  (00:01)
ylin7     console      :0               Fri Dec 27 15:24 - 16:04  (00:40)
lwoods4   console      :0               Fri Dec 27 14:11 - 14:25  (00:13)
lwoods4   console      :0               Fri Dec 27 11:18 - 11:35  (00:17)
dhesek    console      :0               Thu Dec 26 13:21 - 14:38  (01:16)
dhesek    console      :0               Wed Dec 25 14:20 - 14:23  (00:02)
sbrown3   console      :0               Tue Dec 24 14:40 - 14:53  (00:12)
dhesek    console      :0               Tue Dec 24 09:21 - 09:25  (00:04)
sbrown3   console      :0               Mon Dec 23 11:20 - 12:20  (00:59)
ylin7     console      :0               Sun Dec 22 21:44 - 22:00  (00:16)
sbrown3   console      :0               Sat Dec 21 15:05 - 16:18  (01:12)
kwatson2  console      :0               Fri Dec 20 18:41 - 19:03  (00:22)

输出

代码语言:javascript
复制
dhesek 88
kwatson2 22
lwoods4 53
sbrown3 143
ylin7 56
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20887497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档