AWS CloudShell で、操作ログを保存して、作業後にローカルPCへダウンロードする方法のメモ。
目次
検証環境
- 検証日: 2022/01/08
- PC環境:
- Windows10 Home Ver21H1
- Google Chrome: バージョン: 97.0.4692.71(Official Build) (64 ビット))
- AWSマネジメントコンソールへログイン
- Google Chrome: バージョン: 97.0.4692.71(Official Build) (64 ビット))
- Windows10 Home Ver21H1
注意事項
- 本記事の内容は
AWS CloudShell
で検証しています。 - AWS CloudShell の AWS CLIは
バージョン2
を使用しています。 - コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
- 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。
1. AWS CloudShellでの操作ログ取得
1.1. scriptコマンド
コマンドの書式
script [オプション] [ファイル名]
ターミナルの操作ログを作成するコマンド。
ファイル名無しで実行するとカレントディレクトリへtypescript
というファイルが作成され、そこへ記録される。
オプション | 説明 |
---|---|
-a, --append | 既存ファイルへの追記 |
-f, --flush | コマンド実行毎にファイルへ記録する 指定しない場合は最後にまとめて記録する |
-T, --log-timing | タイムスタンプの追加 |
-q, --quiet | 開始や終了のメッセージを出力しない |
参考にさせていただいたWEBサイト
https://linuxjm.osdn.jp/html/util-linux/man1/script.1.html
【script】Linuxで操作ログを記録するコマンド | UX MILK
1.2. 操作ログ取得で実行するコマンド
AWS CloudShell を開いて以下コマンドを実行すると、操作ログが取得開始します。
※開始中はプロンプトが変わり、変数は引き継がれません。
# 変数にログ名を設定 ## SAMPLE: 20220108_135500_CloudShell.log LOGS_NAME="$(TZ=JST-9 date +%Y%m%d_%H%M%S)_CloudShell.log" && echo "${LOGS_NAME}" # 操作ログの取得開始 script ${HOME}/${LOGS_NAME}
操作ログの取得停止
# 終了するコマンド(または ctrl + d) exit
操作ログの保存場所PATHの取得
# 操作ログの保存場所(後で Download file する時に使える) echo "${HOME}/${LOGS_NAME}"
ダウンロード後に操作ログファイルを削除する。
# 操作ログファイルの削除 rm "${HOME}/${LOGS_NAME}"
1.3. 操作ログファイルをダウンロードする
ダウンロードするためには、操作ログファイルのPATHが必要です。
操作ログを終了した時に表示されるのでcopyしておきます。
※SAMPLE: 下記画像の選択範囲
GUI操作で、AWS CloudShell画面右上の[Actions]から[Download file]をクリックする。
操作ログファイルのPATHを入力して[Download]をクリックすると、操作ログファイルがダウンロードされます。
1.4. 操作ログファイルに [m が混ざる場合
ハイライトされた結果の表示やBackspace等の記録が混ざる場合があります。
ここら辺の仕組みがいまいち解っていないので、邪魔な場合はダウンロードしてから正規表現で置換しています。
(例)サクラエディタでの正規表現置換
置換前: \S\[([0-9]{1,2}(;[0-9]{1,2})*)?[mK]
置換後: (空欄)
2. SAMPLE: 操作ログ
[cloudshell-user@ip-10-0-26-82 ~]$ # 変数にログ名を設定 [cloudshell-user@ip-10-0-26-82 ~]$ LOGS_NAME="$(TZ=JST-9 date +%Y%m%d_%H%M%S)_CloudShell.log" && echo "${LOGS_NAME}" 20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログ開始前にユーザや変数を見る [cloudshell-user@ip-10-0-26-82 ~]$ whoami cloudshell-user [cloudshell-user@ip-10-0-26-82 ~]$ uname -r 4.14.252-195.483.amzn2.x86_64 [cloudshell-user@ip-10-0-26-82 ~]$ echo ${PS1} [\u@\h \W]\$ [cloudshell-user@ip-10-0-26-82 ~]$ echo ${LOGS_NAME} 20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログの取得開始 [cloudshell-user@ip-10-0-26-82 ~]$ script ${HOME}/${LOGS_NAME} Script started, file is /home/cloudshell-user/20220108_142606_CloudShell.log sh-4.2$ sh-4.2$ # メモ: プロンプトが変更され、変数は引き継がれない。 sh-4.2$ sh-4.2$ # 操作ログ開始中にユーザや変数を見る sh-4.2$ whoami cloudshell-user sh-4.2$ uname -r 4.14.252-195.483.amzn2.x86_64 sh-4.2$ echo ${PS1} \s-\v\$ sh-4.2$ echo ${LOGS_NAME} sh-4.2$ sh-4.2$ sh-4.2$ sh-4.2$ # 終了するコマンド(または ctrl + d) sh-4.2$ exit exit Script done, file is /home/cloudshell-user/20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログ終了後にユーザや変数を見る [cloudshell-user@ip-10-0-26-82 ~]$ whoami cloudshell-user [cloudshell-user@ip-10-0-26-82 ~]$ uname -r 4.14.252-195.483.amzn2.x86_64 [cloudshell-user@ip-10-0-26-82 ~]$ echo ${PS1} [\u@\h \W]\$ [cloudshell-user@ip-10-0-26-82 ~]$ echo ${LOGS_NAME} 20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログの保存場所(後で Download file する時に使える) [cloudshell-user@ip-10-0-26-82 ~]$ echo "${HOME}/${LOGS_NAME}" /home/cloudshell-user/20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログの中身を見てみる [cloudshell-user@ip-10-0-26-82 ~]$ # メモ: 課題、Windowsで操作していると改行コードの違いで「[m」が出る時がある。 [cloudshell-user@ip-10-0-26-82 ~]$ cat "${HOME}/${LOGS_NAME}" Script started on 2022-01-08 05:26:06+0000 sh-4.2$ sh-4.2$ # メモ: プロンプトが変更され、変数は引き継がれない。 sh-4.2$ sh-4.2$ # 操作ログ開始中にユーザや変数を見る sh-4.2$ whoami cloudshell-user sh-4.2$ uname -r 4.14.252-195.483.amzn2.x86_64 sh-4.2$ echo ${PS1} \s-\v\$ sh-4.2$ echo ${LOGS_NAME} sh-4.2$ sh-4.2$ sh-4.2$ sh-4.2$ # 終了するコマンド(または ctrl + d) sh-4.2$ exit exit Script done on 2022-01-08 05:26:23+0000 [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ ls 20220108_142606_CloudShell.log [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ # 操作ログファイルの削除 [cloudshell-user@ip-10-0-26-82 ~]$ rm "${HOME}/${LOGS_NAME}" [cloudshell-user@ip-10-0-26-82 ~]$ [cloudshell-user@ip-10-0-26-82 ~]$ ls [cloudshell-user@ip-10-0-26-82 ~]$