すべての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