[인터돌™] 공부 해보자!! 열심히~~~

반응형

하고 싶은 것

쉘스크립트 안쪽, 원격 등 터미널로 로그인한 세션이 아닌 외부에서 history 명령을 실행해서 해당 계정의 이력을 확인하고 싶다.

 

문제점

터미널로 로그인한 상태에서 history 를 입력하면 이력이 나오는데, 원격 (ssh 로 명령 실행, 파이썬 코드로 원격 접속 후 실행 등) 으로 history 를 실행하면 결과가 안나온다.

 

 

해결방법

bash 쉘은 기본적으로 history 명령을 noninteractive shell 에서 비활성 시킨다고 한다.

아래와 같이 활성화 시키면 된다

#!/bin/bash

HISTFILE=~/.bash_history
set -o history
history | tail ......

ssh 로 원격에서 호출하는 경우 위와 같이 .sh 파일을 만들어두고 해당 .sh 를 호출하면 된다.

 

history 의 날짜 포맷을 원하는대로 설정하기

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

 

 

 

 

 

 

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band