grep 및 last를 사용하여 특정 날짜에 로그인한 모든 사용자를 나열하는 방법

grep 및 last를 사용하여 특정 날짜에 로그인한 모든 사용자를 나열하는 방법

Last 및 grep을 사용하여 월요일에 로그인한 모든 사용자를 나열하는 명령 또는 명령 시퀀스를 작성해야 합니다. 나는 이것을 생각해 냈지만 성공하지 못했습니다.

grep -i /var/log/wtmp | grep -i /var/log/wtmp | 최종 -t 20150731

답변1

last | grep -i Mon( -i나처럼 "Mon"을 대문자로 쓰는 경우에는 해당 옵션이 필요하지 않습니다)

제안된 솔루션에는 몇 가지 문제가 있습니다.

  • 파이프 |표기법은 (파이프를 통해) 첫 번째 프로그램(왼쪽)의 표준 출력을 두 번째 프로그램(표준 입력)으로 보냅니다. 그래서 당신이 하는 일은 grep -i /var/log/wtmp의 출력을 last -t 20150731. 로그인 정보가 출력되기 때문에 last먼저 와야 합니다.

  • grep -i /var/log/wtmp표준 입력에서 "/var/log/wtmp"를 찾아보세요(대소문자 구분 안 함). 파일을 검색 할 수 있지만 grep파일은 검색하려는 항목 뒤에 옵니다(예: grep find_me in_this_file파일 in_this_file에서 "find_me" 문자열 검색). 파일이 지정되지 않았으므로 표준 입력을 찾습니다. 첫 번째(파이프 전)의 경우 이는 last; last하지만 grep첫 번째 항목의 경우 Enter 키를 눌러 명령을 실행한 후 입력하는 내용입니다.

  • grep이 경우 실제로 "/var/log/wtmp"가 아닌 "Mon" 검색을 사용해야 합니다 . last"/var/log/wtmp"를 사용하세요. 하지만 관심 있는 것은 데이터를 얻을 위치 가 아니라 grep출력뿐입니다 .lastlast

  • last -t 201507312015년 7월 31일까지의 모든 로그인 정보가 출력됩니다. (7월 31일을 포함하려면 8월 1일을 날짜로 지정해야 합니다.) 유일한 문제는 last날짜에 하이픈이 필요하다는 것입니다.~하지 않는 한전체 시간(초 포함)을 지정합니다. 따라서 하이픈은 필요 last -t 2015-07-31하지만 하이픈은 필요하지 않습니다 last -t 20150731000000(둘 다 같은 시간, 자정을 지정함).시작2015년 7월 31일). 원래 질문에는 날짜별로 목록을 제한해야 한다고 명시되어 있지 않으므로 위 답변에서 제외하겠습니다. 날짜별로 제한해야 하는 경우 last -t 2015-07-317월 30일(7월 31일 제외)까지의 목록을 사용하세요. 또는 last -t 2015-08-017월 31일 현재 목록.

grep자세한 내용(정규 표현식 및 을 사용하여 다양한 시간 형식으로 수행할 수 있는 모든 재미있는 작업 포함)을 보려면 및 last매뉴얼 페이지를 확인하세요.man grepman last

위는 로그인을 역시간순(가장 최근 순)으로 표시합니다. 다른 명령을 추가하여 원래 질문의 제한을 초과했지만 결과를 명령 grep에 파이프 tac하여 결과를 시간순(가장 최근 마지막)으로 표시 할 수도 있습니다 last | grep -i Mon | tac.

답변2

last | grep Mon | awk '{print $1}' | sort -u

관련 정보