| Next | Lightweight Databases | 44 |
Unix lastlog records are stored in this way
sub get_lastlog_info {
my $user = shift;
$user = getpwnam($user) if $user =~ /\D/;
return unless defined $user;
open L, "<", "/var/log/lastlog" or return;
seek L, 292 * $user, SEEK_SET;
return unless read(L, my($buf), 292) == 292;
my ($time, $tty, $host) = unpack "i a32 a256", $buf;
return ($time, $tty, $host);
}
To use:
if (my ($time, $tty, $host) = get_lastlog_info(shift)) {
print "$user on $tty from $host\n\tat ",
scalar(localtime $time), "\n";
} else {
print "$user never logged in\n";
}
% perl lastlog.pl hkang
hkang on pts/18 from evrtwa1-ar10-4-61-239-206.evrtwa1.dsl-verizon.net
at Sat Apr 19 15:45:56 2003
% perl lastlog.pl www
www never logged in
Complete code in lastlog.pl
| Next | ![]() |
Copyright © 2003 M. J. Dominus |