gpt4 book ai didi

用于计算机限制的 linux 用户登录/注销日志

转载 作者:太空狗 更新时间:2023-10-29 12:38:28 25 4
gpt4 key购买 nike

我想知道如何记录用户的登录和注销:这将是一种衡量某人在一个月内连接了多少时间的方法。

我知道可以使用命令“last”。但是此命令基于对用户具有读/写权限的文件,因此可以更改这些数据。我想在两个月内记录这些数据。

我为什么要这样做?事实上,我想防止普通用户每天使用计算机(主要是图形模式)超过一个小时——周末除外,每周总共使用 10 小时。

塞德里克

(使用系统:kubuntu,/编程语言:bash脚本)

最佳答案

这是一个 Perl 脚本,它总结了 last 打印的内容。它基于书中的示例 Running Linux ,为提高可读性而进行了清理,并进行了更正以在现代机器上工作(last 的 输出的格式似乎自最初编写以来已经发生了变化)。将代码保存到一个文件中,然后您可以通过将 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";
}

关于用于计算机限制的 linux 用户登录/注销日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2775199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com