로그인 기록은 어떻게 추출합니까?


94

특정 사용자의 로그인 기록 (예 : 로그인 및 로그 아웃 시간)을 알아야합니다. Linux에서 특정 기간 동안이 기록을 추출하려면 어떻게해야합니까?

답변:


133

다음 last명령을 시도 할 수 있습니다 .

last john 

사용자 john의 로그인 / 아웃 기록을 인쇄합니다. 그냥 달리는 반면

last

모든 사용자의 로그인 / 로그 아웃 기록을 인쇄합니다.


5
이것은 대부분의 Linux 배포판에서 이번 달의 값만 반환합니다.
ewwhite

42

한 달보다 더 오래 기록으로 돌아 가야 /var/log/wtmp.1하는 경우 last명령을 사용 하여 파일을 읽을 수 있습니다 .

last -f wtmp.1 john이전 달의 사용자 로그인 기록이 표시됩니다 john.

마지막 로그 출력은 너무 무겁지 않고 구문 분석하기가 쉽지 않으므로 특정 날짜 패턴을 찾기 위해 출력을 grep으로 파이프합니다.

last john | grep -E 'Aug (2[0-9]|30) '8 월 20-30 일을 보여주기 위해. 또는 다음과 같은 것 :

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '사용자를 위해 7 월 10-30 일을 취득하십시오 john.


21

Linux에서 특정 날짜 범위의 로그인 기록을 추출하는 방법은 무엇입니까?

8 월 25 일부터 28 일까지 모든 사용자 로그인을 나열하는 예 :

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 }'last출력 에서 해당 열의 날짜 시간을 추출합니다.
  • +%s 날짜 시간을 Epoch 시간으로 변환
  • -ge 크거나 같다
  • -le 작거나 같음

을 사용하여 특정 사용자에 대해 수행 할 수도 있습니다 last <username>.


1
그것은 아주 못생긴 표정입니다. last출력을 읽을 수 있기 때문에 grep이 더 깨끗하지 않습니까?
ewwhite

3
당신은 할 수 grep"8월 25일 21시"을 "8월 15일 9시"의?
quanta

1
OP는 시간 범위를 요구하지 않았습니다.
ewwhite

1
@ewwhite 표현은 나에게 아름답게 보입니다 .bash 구문의 모양이 마음에 들지 않으면이 사이트가 아닐 수도 있습니다.
ekerner

1
@ekerner 당신이 맞아요. 나는 다른 곳으로 갈 것이다;)
ewwhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.