WEB开发网
开发学院操作系统Linux/Unix 系统管理工具包: 监视用户的使用情况 阅读

系统管理工具包: 监视用户的使用情况

 2009-11-04 00:00:00 来源:WEB开发网   
核心提示: #defineUT_NAMESIZE8#defineUT_LINESIZE8#defineUT_HOSTSIZE16请注意,您必须正确地获取数据的大小,系统管理工具包: 监视用户的使用情况(10),因为它将影响到您所读取的信息,如果您使用的是 Solaris 或者 BSD 系统,您可以使用 Pe

#define UT_NAMESIZE   8 
#define UT_LINESIZE   8 
#define UT_HOSTSIZE   16 

请注意,您必须正确地获取数据的大小,因为它将影响到您所读取的信息。如果您使用的是 Solaris 或者 BSD 系统,那么它使用了一种更加简单的结构(如清单 8 所示),因此,您需要使用一个不同的 packstring 和提取的字段,如清单 19 中所示。


清单 19. Solaris 或者 BSD 系统的数据转储

my $packstring = "a8a8a16l"; 
my $reclength = length(pack($packstring)); 
my @ut_types = qw(EMPTY RUN_LVL BOOT_TIME OLD_TIME 
         NEW_TIME INIT_PROCESS LOGIN_PROCESS 
         USER_PROCESS DEAD_PROCESS ACCOUNTING); 
 
open(D,"</var/log/wtmp") or die "Couldn't open wtmp, $!"; 
 
while(sysread(D,my $rec,$reclength)) 
{ 
  my ($line,$name,$host,$time) 
    = unpack($packstring,$rec); 
  print("$line, $name, $host,", scalar localtime($time),"\n"); 
} 
 
close(D) or die "Couldn't close wtmp, $!"; 

运行这个脚本,您将获得 wtmp 的登录信息。获取行信息所在的行是注销而不是登录,如清单 20 中的代码片段所示。


清单 20. 获取 wtmp 的登录信息

ftp599, statmon, nautilus.mcslp.p,Wed Sep 12 16:00:13 2007 
ftp599, , ,Wed Sep 12 16:00:14 2007 
ftp4003, statmon, sulaco.mcslp.pri,Wed Sep 12 16:04:35 2007 
ftp4003, , ,Wed Sep 12 16:04:35 2007 
ftp4035, statmon, narcissus.mcslp.,Wed Sep 12 16:05:00 2007 
ftp4035, , ,Wed Sep 12 16:05:00 2007 
ftp4037, statmon, nostromo.mcslp.p,Wed Sep 12 16:05:01 2007 
ftp4037, , ,Wed Sep 12 16:05:02 2007 
ftp4057, statmon, nautilus.mcslp.p,Wed Sep 12 16:05:14 2007 
ftp4057, , ,Wed Sep 12 16:05:14 2007 

总结

在本文中,您简单地了解了在登录时所发生的操作、如何将登录记录到 UNIX 系统,以及如何使用这些信息以确定当前登录的用户和过去曾经登录过的用户。例如,您可以使用 Perl 脚本的修改版本,以提供总的用户时间信息,并以此向相应的用户或者部门收费。

上一页  5 6 7 8 9 10 

Tags:系统 管理 工具包

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接