쉘스크립트 안쪽, 원격 등 터미널로 로그인한 세션이 아닌 외부에서 history 명령을 실행해서 해당 계정의 이력을 확인하고 싶다.
터미널로 로그인한 상태에서 history 를 입력하면 이력이 나오는데, 원격 (ssh 로 명령 실행, 파이썬 코드로 원격 접속 후 실행 등) 으로 history 를 실행하면 결과가 안나온다.
bash 쉘은 기본적으로 history 명령을 noninteractive shell 에서 비활성 시킨다고 한다.
아래와 같이 활성화 시키면 된다
#!/bin/bash
HISTFILE=~/.bash_history
set -o history
history | tail ......
ssh 로 원격에서 호출하는 경우 위와 같이 .sh 파일을 만들어두고 해당 .sh 를 호출하면 된다.
history 명령을 수행했을 때 날짜가 같이 출력이 되는데, 원격으로 실행을 하면 설정된 대로 안나오거나, 아예 날짜가 안나올 수 있다.
.sh 에 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " 를 추가해서 아래와 같이 해주면 원하는 포맷으로 날짜가 출력이 된다.
#!/bin/bash
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
HISTFILE=~/.bash_history
set -o history
history | tail ......
※ 참고한 사이트 - https://unix.stackexchange.com/questions/5684/history-command-inside-bash-script |