我想知道如何记录用户的登录和注销:这是衡量一个人到目前为止连接多长时间的意思。
我知道可以使用命令“last”。但是此命令基于具有用户r / w权限的文件,因此可以更改这些数据。 我想在两个月内记录这些数据。
为什么我喜欢这样做?事实上,我想阻止普通用户每天使用计算机(主要是图形模式)超过一小时 - 除了周末,一周总共10小时。
塞德里克
(使用的系统:kubuntu,/编程语言:bash脚本)
答案 0 :(得分:1)
这是一个Perl脚本,它总结了last
打印的内容。它基于书籍Running Linux中的一个示例,为了便于阅读而进行了清理并更正了在现代机器上工作(last's
输出的格式似乎自原始编写后发生了变化)。将代码保存到文件中,然后可以通过将last
的输出汇总到它来运行它。
#!/usr/bin/perl
# logintime.pl - Summarise amount of time a user is logged in.
# Usage: last | perl logintime.pl
use strict;
use warnings;
my %hours;
my %minutes;
my %logins;
# While we have input...
while ( <> ) {
# Extract the username and login time...
if ( my ($username, $hrs, $mins) = /^(\S+).*\((\d+):(\d+)\)/ ) {
# Increment total hours, minutes, and logins
$hours{$username} += $hrs;
$minutes{$username} += $mins;
$logins{$username}++;
}
}
# For each unique user...
foreach my $user ( sort keys %hours ) {
# Calculate the total hours and minutes...
$hours{$user} += int($minutes{$user} / 60);
$minutes{$user} %= 60;
# Print the information for this user...
print "User $user, total login time ";
printf "%02d:%02d, ", $hours{$user}, $minutes{$user};
print "total logins $logins{$user}.\n";
}
答案 1 :(得分:0)
并不完全符合您的要求,但this article显示了如何限制用户只能在指定时间内登录。