chiunque può dirmi come posso creare un elenco di utenti che hanno effettuato l'accesso ieri o prima ma non hanno ancora effettuato il logout. senza ripetere lo stesso utente nell'elenco.In UNIX, come trovare utenti che hanno effettuato l'accesso ieri o prima
10
A
risposta
12
0
È possibile farlo a livello di codice, ad es.
In Python:
from pyutmp import UtmpFile
import time
import datetime
for utmp in UtmpFile():
# utmp is a Utmp object
if utmp.ut_user_process:
duration=(time.time()-utmp.ut_time)
if duration > (24*60*60):
if not utmp.ut_user in users:
users.append(utmp.ut_user)
print '%s logged in at %s session duration: %d:%d:%d [%s] on tty %s from %s' % (utmp.ut_user, time.ctime(utmp.ut_time), (duration/3600), ((duration%3600)/60), (duration%60), datetime.timedelta(seconds=duration), utmp.ut_line, utmp.ut_host)
In Perl:
#! /usr/bin/perl -w
use lib './blib/lib', './blib/arch';
use Getopt::Std;
use User::Utmp qw(:constants);
use Socket;
use strict;
my @utmp;
my %ut_type = (BOOT_TIME() => "BOOT_TIME",
DEAD_PROCESS() => "DEAD_PROCESS",
EMPTY() => "EMPTY",
INIT_PROCESS() => "INIT_PROCESS",
LOGIN_PROCESS() => "LOGIN_PROCESS",
NEW_TIME() => "NEW_TIME",
OLD_TIME() => "OLD_TIME",
RUN_LVL() => "RUN_LVL",
USER_PROCESS() => "USER_PROCESS");
my ($user,$duration,$host,$hostAddr,$hostName,$start,$startX,$startXms,$line,$pid,%users);
if (User::Utmp::HAS_UTMPX()) {
@utmp = User::Utmp::getutx();
} else {
@utmp = User::Utmp::getut();
}
print "\nActive Users - loged in for more than a day\n";
foreach my $entry (@utmp)
{
unless ($entry->{"ut_type"} != USER_PROCESS || $users{$entry->{"ut_user"}}) {
$user = $entry->{"ut_user"};
$host = $entry->{"ut_host"};
$hostAddr = $entry->{"ut_addr"};
$start = $entry->{"ut_time"};
$startX = $entry->{"ut_tv"};
$startXms = $entry->{tv_usec};
$line = $entry->{"ut_line"};
$pid = $entry->{"ut_pid"};
$duration = time - $start;
next if ($duration < (24*60*60));
$users{$user} = $user;
if ($hostAddr) {
$hostName = gethostbyaddr($hostAddr, AF_INET) ;
$hostName .= " (" ;
$hostName .= join(".", unpack("C4", $hostAddr));
$hostName .= ")";
} else {
$hostName="";
}
printf "User: %s, has been logged in since: %s, duration %d:%d:%d [%d days %d hours %d mins %d secs], on %s (PID: %s), from %s [%s]\n", $user, scalar(localtime($start)), $duration/3600, ($duration%3600)/60, $duration%60, ($duration/(3600*24)), $duration/3600, ($duration%3600)/60, $duration%60, $line, $pid, $host, $hostName;
}
}
print "\n\n";
Problemi correlati
- 1. Elenco degli utenti che hanno effettuato l'accesso in Wordpress?
- 2. Come trovare tutti gli utenti loggati e quegli utenti che accedono al sito ma non hanno effettuato l'accesso?
- 3. I siti web come Facebook store hanno effettuato l'accesso agli utenti in cookie o sessioni?
- 4. Come si fa a disconnettere tutti gli utenti che hanno effettuato il login in primavera?
- 5. WordPress visualizza post privati per gli utenti che hanno effettuato l'accesso - come disattivare questa funzionalità?
- 6. Trovare tutti gli utenti che hanno nomi duplicati
- 7. utenti SELECT * che hanno una certa età
- 8. Interrogazione Gli utenti che hanno 'come' la mia pagina Facebook
- 9. agli utenti di selezionare che hanno downvoted ma mai upvoted
- 10. Il plug-in di Facebook Like Box non viene visualizzato per gli utenti che hanno effettuato la disconnessione; solo per gli utenti registrati
- 11. Quanti utenti hanno installato Flash, Java, Unity o altri plugin?
- 12. Quanti utenti hanno la versione aggiornata dell'app
- 13. Che cosa era la mezzanotte di ieri come un'epoca?
- 14. Qual è il modo più efficace per trovare quali utenti hanno preferito un tweet specifico?
- 15. Come ottenere un elenco di persone che hanno effettuato il check-in in una posizione in Facebook
- 16. Confronta NSDate per oggi o ieri
- 17. Trovare file leggibili su Unix
- 18. XPath per trovare elementi che non hanno un ID o classe
- 19. Utilizzo di PrincipalSearcher per trovare utenti con parametri "o"
- 20. Come faccio a rendere alcuni attributi accessibili solo agli utenti che hanno un ruolo specifico?
- 21. Controllare elegantemente se una data è ieri
- 22. query MySQL - trovare "nuovi" utenti al giorno
- 23. Come visualizzare la prima riga che contiene una determinata stringa in un file di testo unix?
- 24. PowerShell trovare utenti con scadenza 7 giorni
- 25. Dove posso trovare utenti beta?
- 26. Come trovare le righe che hanno un valore che contiene una lettera minuscola
- 27. In che modo StackOverflow mantiene gli utenti connessi su HTTP?
- 28. Acquisti in-app per gli utenti che hanno già pagato l'app
- 29. Passo stdin in host Unix o comando
- 30. Trovare le righe che hanno tutti gli elementi come zeri in una matrice numpy
Questo dovrebbe essere posta nelle "colpa server" o "Super Utente" ... non proprio una questione di programmazione –
no questo è unix programmazione della shell di comando. –