Antworten:
Wenn Sie mehr als einen Monat in der Geschichte zurücklegen müssen, können Sie die /var/log/wtmp.1Datei mit dem lastBefehl lesen .
last -f wtmp.1 johnzeigt den Verlauf der Logins des Vormonats für den Benutzer an john.
Die letzte Protokollausgabe ist nicht zu umfangreich und relativ einfach zu analysieren. Daher würde ich die Ausgabe wahrscheinlich an grep leiten, um nach einem bestimmten Datumsmuster zu suchen.
last john | grep -E 'Aug (2[0-9]|30) '20. bis 30. August zu zeigen. Oder so etwas wie:
last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '10-30 Juli für Benutzer zu erwerben john.
Wie extrahiere ich den Anmeldeverlauf für einen bestimmten Datumsbereich in Linux?
Ein Beispiel, um alle Benutzer aufzulisten, die sich vom 25. bis 28. August anmelden:
last | while read line
do
date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`
[[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
awk '{ print $5" "$6" "$7 }'um das Datum und die Uhrzeit in der entsprechenden Spalte aus der lastAusgabe zu extrahieren+%s um datetime in Epochenzeit umzuwandeln-ge stehen für größer als oder gleich-le stehen für weniger als oder gleichSie können dies auch für einen bestimmten Benutzer mit tun last <username>.
lastAusgabe ziemlich lesbar ist?
grepvon "15. August 09:00" bis "25. August 21:00"?