Como limpar as últimas -10 informações?

4

Como limpar as últimas 10 informações apenas para um sistema Linux? Tentei executar o comando > /var/log/wtmp para limpar a última informação, mas ela limpa todas as informações de login, mas preciso limpar apenas as últimas 10 informações de login.

    
por Mughil 13.03.2012 / 04:56

1 resposta

5

O arquivo wtmp é uma sequência de struct utmp records. Para remover os últimos 10 registros, primeiro você descobre o tamanho de um registro utmp e, em seguida, trunca o arquivo wtmp com seu tamanho atual menos dez vezes o tamanho de um registro de utmp.

Um programa simples em C lhe dará o tamanho de um registro em utmp.

#include <utmp.h>
#include <stdio.h>

struct utmp foo;

main()
{
    printf("%lu\n", sizeof foo);
    return 0;
}

e um script Perl irá truncar o arquivo wtmp

$utmp_size = utmp_record_size_goes_here;
$wtmp_file = "wtmp filename goes here";
open WTMP, "+<", $wtmp_file or die "$wtmp_file: ", $!;
seek WTMP, -10 * $utmp_size, 2;
truncate WTMP, tell(WTMP);
close WTMP;
    
por 13.03.2012 / 06:54