Chinaunix

标题: 在看pleacPerl的时候遇到一个问题(关于pack /var/log/lastlog) [打印本页]

作者: dream3401    时间: 2009-03-13 12:20
标题: 在看pleacPerl的时候遇到一个问题(关于pack /var/log/lastlog)
在看pleacperl时,有一段关于改/var/log/lastlog文件中某个用户的最后登录时间时,我试了好几次都不成,请大家帮我看看:
代码:
#!/usr/bin/perl -l
use User::pwent;
use IO::Seekable;
   open $fh,"+</var/log/lastlog";
   $typedef='L A12 A16';
   $sizeof=length(pack($typedef,()));

   $user=$ENV{USER};
   print "user=>$user";
   $offset=getpwnam($user)->uid*$sizeof;
   seek($fh,$offset,SEEK_SET);
   read($fh,$buffer,$sizeof);
   ($time,$line,$host)=unpack($typedef,$buffer);
   print $time;
   print $line;
   print $host;
   $time-=60*60*7;
   print $time;
   seek($fh,-$sizeof,1);
   $buffer=pack($typedef,time,$line,$host);
   print $fh $buffer;
   close($fh);

我在pleacperl中的原来的代码中加了几个print看一下最后登录的信息,可是好象print $line,print $host没有什么作用,代码执行后,通过"lastlog"命令看当前用户的最后登录时间也没有减一天(原文是减7天)。
作者: dream3401    时间: 2009-03-16 15:03
偷偷的顶一下
作者: MMMIX    时间: 2009-03-16 22:24
我觉得你还是先了解下你系统上的 lastlog 文件的格式为好,看看它的那个 unpack 指定的格式串到底对不对
作者: dream3401    时间: 2009-03-17 09:13
原帖由 MMMIX 于 2009-3-16 22:24 发表
我觉得你还是先了解下你系统上的 lastlog 文件的格式为好,看看它的那个 unpack 指定的格式串到底对不对

嗯,我也觉得是/var/log/lastlog的格式可能与上面源代码中所选的格式不同。
但不知道如何了解到本机lastlog的格式,man lastlog也没有这方面的说明
我的机器是Debian GNU/Linux 4.0的操作系统。
作者: MMMIX    时间: 2009-03-17 12:29
原帖由 dream3401 于 2009-3-17 09:13 发表

嗯,我也觉得是/var/log/lastlog的格式可能与上面源代码中所选的格式不同。
但不知道如何了解到本机lastlog的格式,man lastlog也没有这方面的说明
我的机器是Debian GNU/Linux 4.0的操作系统。

我也没有找到。你要真想知道,估计要看看源码。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2