Вход в систему пользователя Linux / выход из системы для ограничения компьютера - PullRequest
2 голосов
/ 05 мая 2010

Я хотел бы знать, как регистрировать вход и выход пользователя из системы: это было бы способом измерить, сколько времени кто-то был подключен за месяц до сих пор.

Я знаю, что можно использовать команду "последний". Но эта команда основана на файле, который имеет разрешение на чтение / запись для пользователя, следовательно, возможность изменять эти данные. Я хотел бы зарегистрировать эти данные в течение двух месяцев.

Зачем мне это делать? На самом деле, я бы хотел запретить обычному пользователю пользоваться компьютером (в основном в графическом режиме) более часа в день, кроме выходных и всего 10 часов в неделю.

Cedric

(Используемая система: kubuntu, / Язык программирования: скрипт bash)

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Вот скрипт Perl, который суммирует содержимое, напечатанное last. Он основан на примере из книги Запуск 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"; 
}
0 голосов
/ 05 мая 2010

Не совсем то, что вы ищете, но эта статья показывает, как запретить пользователю вход в систему только в течение указанного времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...