我想知道如何登錄用戶的登錄和註銷:這將是衡量某人在一個月內連接了多少時間的一種手段。linux用戶登錄/登出日誌限制計算機
我知道可以使用命令「last」。但是這個命令是基於一個對用戶具有r/w權限的文件,因此可以更改這些數據。 我想在兩個月內記錄這些數據。
爲什麼我會喜歡那樣做?事實上,我想阻止普通用戶每天使用計算機(主要以圖形模式)每天超過一個小時 - 除週末外,每週總計10小時。
塞德里克
(系統使用:Kubuntu的,/編程語言:bash腳本)
我想知道如何登錄用戶的登錄和註銷:這將是衡量某人在一個月內連接了多少時間的一種手段。linux用戶登錄/登出日誌限制計算機
我知道可以使用命令「last」。但是這個命令是基於一個對用戶具有r/w權限的文件,因此可以更改這些數據。 我想在兩個月內記錄這些數據。
爲什麼我會喜歡那樣做?事實上,我想阻止普通用戶每天使用計算機(主要以圖形模式)每天超過一個小時 - 除週末外,每週總計10小時。
塞德里克
(系統使用:Kubuntu的,/編程語言:bash腳本)
你要找不太什麼,但this article顯示瞭如何從只能夠在登錄限制用戶指定的時間。
感謝您的回答/評論。我將進一步研究linux PAM,如果我在那裏找不到信息,我將更關注'last',因爲/ var/log/wtmp不應該被普通用戶寫入。 最後但並非最不重要的一點,我會記住我將在未來發布我的問題的網站。 – Cedric 2010-05-06 08:44:39
這是一個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";
}
屬於serverfault? – Hasturkun 2010-05-05 16:52:57
不,超級用戶。順便說一句,'/ var/log/wtmp'可以由root和utmp的成員寫入。它不應該由普通用戶寫入。 – 2010-05-05 20:04:11