2017-11-04 12 views
-3

날짜 및 시간과 사용자의 IP 주소를 서버에 로그인하고 특정 명령을 실행하기 위해 history 명령을 다시 설정해야합니다 . history 명령으로이 정보를 표시 할 수있는 방법이 있습니까?Bash 기록에 날짜, 시간 및 사용자 IP를 저장하는 방법

샘플 출력은 다음과 같습니다 당신이 HISTTIMEFORMAT을 설정하여 배쉬 역사에 타임 스탬프를 설정 할 수 있지만

Sat 04 Nov 2017 06:20:20 AM +03 111.111.111.111 : pwd Sat 04 Nov 2017 06:20:20 AM +03 111.123.123.111 : mkdir test Sat 04 Nov 2017 06:20:20 AM +03 123.123.44.32 : pwd

이 설정에 하나 .bash_profile을 통해 이러한 변화를 도와주세요 또는

+0

에 CentOS 서버에서 –

+1

는 노력을 보여주십시오 (언급하는 것을 잊지). 시작하려면이 게시물을 참조하십시오. https://stackoverflow.com/questions/11987761/how-to-find-date-wise-history-of-linux-commands-being-fired – codeforester

+0

답장을 보내 주셔서 감사 드리며 이미 이 항목을 .bash_profile에 입력하면 날짜, 시간이 올바르게 표시됩니다. 그러나 해당 명령을 실행하는 사용자의 IP 주소를 가져올 수 없습니다. 는 = "% c :를".bash_profile을 수출 HISTTIMEFORMAT 코드 아래에 입력 출력은 다음과 같습니다 토 2017년 11월 4일 오전 6시 24분 35초 03 : –

답변

0

을 .bashrc에, 당신은 히스토리 파일의 모든 행에 접두어를 붙일 수 없습니다. 당신은 당신의 자신의 기록 파일을 유지하여, 목표를 달성하기 위해 DEBUG 트랩을 사용할 수

save_history() { 
    # make sure IP is set in .bash_profile instead of capturing it each time here 
    printf '%s : %s : %s\n' "$(date)" "$IP" "$BASH_COMMAND" >> /path/to/history_file 
} 

trap save_history DEBUG 

이 방법은 save_history 기능은 각 명령 전에 호출되는 그것은 파일에 명령 기록을 기록합니다.


은 참조 :

+0

안녕하세요 @codeforester 답변 해 주셔서 감사합니다.하지만 답변을 잘 이해하지 못했습니다. IP, history with date 명령을 찾으려면이 출력을 수행하기위한 정확한 단계를 제공하십시오. 다시 한번 감사드립니다. :) –

+0

'ss'와'grep'을 조합하여 IP를 추출합니다. 그리고 SO는 무료 코드 작성 서비스가 아니라는 것을 이해하십시오. 당신은 당신의 노력을 기울여야합니다. – codeforester