Linux 셸 명령을 파일로 캡처

Linux 셸 명령을 파일로 캡처

모든 Linux 셸 명령을 일부 파일로 캡처하려고 합니다. auditd 서비스를 사용해 보았지만 원하는 결과를 얻지 못했습니다.

검색해봤는데 괜찮은거 발견했어요해결책.

1단계: vi /etc/bashrc를 실행하고 끝에 다음 줄을 추가합니다.

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

2 단계:

/etc/rsyslog.conf 파일에 다음 행을 추가하여 로그 파일에 local6을 캡처하도록 syslogger를 설정하십시오.

local6.*                /var/log/cmdlog.log

출력은 다음과 같습니다

1월 10일 11:05:20 itdev-server eddiem: 루트 [7310]: vim /etc/rsyslog.conf [0]

이것은 매우 좋은 솔루션이고 내 요구 사항에 적합하지만 해결할 수 없는 몇 가지 문제가 있습니다.

1) "Enter" 버튼을 무시하고 Enter 버튼을 누를 때마다 마지막 명령을 기록하는 방법.

2) 다른 서버에 ssh를 연결하면 세션 연결이 끊어질 때까지 ssh 명령이 기록되지 않지만 더 중요한 것은 원격 호스트에서 실행 중인 명령이 캡처되지 않는다는 것입니다.

누구든지 해결책이나 해결 방법이 있다면 좋을 것입니다!

미리 감사드립니다.

에디 엠

답변1

script명령이 유용할 수 있습니다. 그것은 포착한다모든 것세션에서 이를 파일에 씁니다( typescript기본값).

$ script
Script started, file is typescript
$ date
10 Jan 2016 12:45:59
$ id
uid=1000(roaima) gid=50(staff)...
$ exit
exit
Script done, file is typescript


$ sed 's/^/|   /' typescript    # cat typescript, with "|" on front of each line
|   Script started on 10 Jan 2016 12:45:56
|   $ date
|   10 Jan 2016 12:45:59
|   $ id
|   uid=1000(roaima) gid=50(staff)...
|   $ exit
|   exit
|
|   Script done on 10 Jan 2016 12:46:03

관련 정보