Quantcast
Viewing all articles
Browse latest Browse all 2722

Linuxログイン時にターミナルでの操作ログを自動で取得する

久しぶりの投稿です。
最近はgpd-micropcにubuntu mateをインストールして遊んでいます。

経緯

ターミナルでの操作ログを自動で取得する方法がないか、探しいていました。
はじめは.bashrcにscriptコマンド書けばよいだろと思っていましたが、どうもうまくいかないようです。。
色々探した挙げ句、参考になる記事を発見しました。
How do I log all input and output in a terminal session?

環境

gpd micropcにubuntu-mateインストールしたものです

OS: Ubuntu 19.10 eoan↲                                                                                                                      
Kernel: x86_64 Linux 5.3.0-40-generic↲
Shell: bash↲
DE: MATE 1.22.2↲
CPU: Intel Celeron N4100 @ 4x 2.4GHz↲
GPU: Mesa DRI Intel(R) UHD Graphics 600 (Geminilake 2x6)-↲

やったこと

1. rsyslog設定ファイル作成

loggerコマンドでログを出力させる形になるので、以下に設定ファイルを作成

vim /etc/rsyslog.d/bash.conf
/etc/rsyslog.d/bash.conf
local6.*    /var/log/commands.log↲

2. .bashrc追記

操作ログ取得対象のユーザのホームディレクトリ配下の.bashrcに以下を追記

vim /home/hoge(対象ユーザ)/.bashrc↲
/home/hoge(対象ユーザ)/.bashrc
whoami="$(whoami)@$(echo$SSH_CONNECTION | awk'{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

3. rsyslogサービス再起動

rsyslogサービスを再起動する

systemctl status rsyslog.service 

4. ログローテート用設定ファイル作成

logrotate.dで日次でローテートするように、設定ファイルを作成する

vim /etc/logrotate.d/commands
/etc/logrotate.d/commands↲
/var/log/commands.log*↲
{↲
»-rotate 7↲
»-daily↲
»-dateext↲
»-missingok↲
»-notifempty↲
»-compress↲
»-postrotate↲
»-»-/usr/lib/rsyslog/rsyslog-rotate↲
»-endscript↲
»-su root root↲                                                                                                                             
}↲

確認

.bashrcを読み込んで

source .bashrc 

以下のようにファイルが /var/log配下にできていることを確認

ls -la /var/log/commands.log*
-rw-r----- 1 syslog adm 4753  3月 15 19:34 /var/log/commands.log
/var/log/commands.log
Mar 15 19:34:29 hoge hoge: hoge@export [3457]: 2020-03-15 19:34:29 cd [0]
Mar 15 19:34:39 hoge hoge: hoge@export [3457]: 2020-03-15 19:34:37 source .bashrc  [0]
Mar 15 19:36:56 hoge hoge: hoge@export [3457]: 2020-03-15 19:36:56 ls -la /var/log/commands.log* [0]

所感

logrotateできてるかあやしい。。
後、scriptコマンドみたいに出力もほしい。。


Viewing all articles
Browse latest Browse all 2722

Trending Articles