wtmp를 반복하고 일부 데이터를 추출하는 방법은 무엇입니까?

wtmp를 반복하고 일부 데이터를 추출하는 방법은 무엇입니까?

다음을 사용하여 wtmp(마지막 명령)를 로그 파일에 저장합니다.

last -F | grep -i -e pv -e nv -e pp > last.log

결과:

여기에 이미지 설명을 입력하세요.

bash 스크립트를 사용하여 사용자 이름(첫 번째 블록)과 로그인 시간(두 번째 블록)을 추출하고 싶습니다. 내가 겪고 있는 문제는 로그 결과를 읽는 방법을 모른다는 것입니다. 로그의 특정 부분을 검색하는 방법. 내 생각에는 이것이 행과 열입니다. 데이터를 추출하는 데 사용할 수 있나요?

인사

답변1

sudoer 사용자의 실제 이름을 얻고 싶기 때문에 이것을 사용하고 있습니다.

/etc/bashrc에 추가:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

그리고 rsyslog.conf에서(로거 local6을 추가하여 /var/log/commads.log를 채웁니다(boot.log 아래에 추가).

sed -ie '/log\/boot.log/a local6.* /var/log/commands.log' /etc/rsyslog.conf    
systemctl restart rsyslog

/var/log/command는 히스토리와 비슷하므로 awk를 사용하여 처리하여 필수 필드만 가져올 수 있습니다.

관련 정보