LoginSignup
7
4

More than 5 years have passed since last update.

zsh内のtmuxでペイン単位で、SSHなど特定のコマンドが終わるまでだけタイムスタンプ付きのログを取るプラグイン

Last updated at Posted at 2018-09-15

なんだこれ

作ったゾイ

https://github.com/nnao45/ztl
ztl04 (1).gif

zsh内のtmuxでペイン単位で、SSHなど特定のコマンドが終わるまでだけタイムスタンプ付きのログを取るプラグインっていう、もう読む気失せるくらい長くてニッチなプラグイン何ですけど、僕は欲しかったんで作りました。

騙されたと思って使ってみると、非常に使い勝手の良い証跡作りになります。

今まででの他のtmuxでロギングツールからパクったりしてるんですが

tmuxを使いながらログを取る
tmuxメモ : Tmux Loggingでロギングとキャプチャ

毎回prefixコマンドをsshする毎に打つとかすると面倒だったってのと、
じゃあtmux上がるたびにログを書き出す処理にしてみると今度は重くなって嫌ってのと、
出来たら宛先別にログが分かれるといいなって思いました。

あと tmux pipe-pane で出力を飛ばす時にタイムスタンプをつけたかった。
(みんながこれをやらない理由は分かったが・・・実際実装出来たが面倒すぎた)

インストールは?

Zplug

write zshrc

zplug "nnao45/ztl", use:'src/_*' 

Source Install

Download Repo

$ mkdir ${HOME}/.ztl
$ git clone https://github.com/nnao45/ztl.git ${HOME}/.ztl/

write zsh

$ echo 'source ${HOME}/.ztl/src/_*' >> ${HOME}/.zshrc

使う例

ログを取りたいコマンドラインの最初に書いておくだけで動きます。

$ ztl <command> ...

sshと一緒に使うのがほとんどなんだよな。

$ ztl ssh <host>

これでファイルは以下のように出来る。

$ ztl ssh skycoin
$ cat ${HOME}/term_logs/skycoin_2018-09-15_14-44-15.log          
[2018-09-15 14:44:21.904392] Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)
[2018-09-15 14:44:21.904844]
[2018-09-15 14:44:21.906093]  * Documentation:  https://help.ubuntu.com
[2018-09-15 14:44:21.906135]  * Management:     https://landscape.canonical.com
[2018-09-15 14:44:21.906162]  * Support:        https://ubuntu.com/advantage
[2018-09-15 14:44:21.906187]
[2018-09-15 14:44:21.906212]   System information as of Sat Sep 15 05:44:19 UTC 2018
[2018-09-15 14:44:21.906236]
[2018-09-15 14:44:21.906261]   System load:  0.05               Processes:              89
[2018-09-15 14:44:22.172836]   Usage of /:   28.4% of 24.55GB   Users logged in:        0
[2018-09-15 14:44:22.173053]   Memory usage: 31%                IP address for ens3:    45.63.21.232
[2018-09-15 14:44:22.173163]   Swap usage:   0%                 IP address for docker0: 172.17.0.1
[2018-09-15 14:44:22.173209]
[2018-09-15 14:44:22.173246]
[2018-09-15 14:44:22.173282]  * Canonical Livepatch is available for installation.
[2018-09-15 14:44:22.173318]    - Reduce system reboots and improve kernel security. Activate at:
[2018-09-15 14:44:22.173361]      https://ubuntu.com/livepatch
[2018-09-15 14:44:22.173408]
[2018-09-15 14:44:22.173444] 64 packages can be updated.
[2018-09-15 14:44:22.173480] 21 updates are security updates.
[2018-09-15 14:44:22.173515]
[2018-09-15 14:44:22.173549]
[2018-09-15 14:44:22.173588] Last login: Sun Aug  5 06:53:15 2018 from XX.XX.XX.XX
[2018-09-15 14:44:23.612444] -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
[2018-09-15 14:44:23.853332] root@nnao45-skycoin:~#
[2018-09-15 14:44:23.963899] root@nnao45-skycoin:~#
[2018-09-15 14:44:24.751494] root@nnao45-skycoin:~#
[2018-09-15 14:44:24.957836] root@nnao45-skycoin:~#
[2018-09-15 14:44:25.745808] root@nnao45-skycoin:~#
[2018-09-15 14:44:25.963387] root@nnao45-skycoin:~#
[2018-09-15 14:44:29.124433] root@nnao45-skycoin:~#
[2018-09-15 14:44:30.807593] root@nnao45-skycoin:~#
[2018-09-15 14:44:30.807679] root@nnao45-skycoin:~# logout
[2018-09-15 14:44:30.813921] Connection to XX.XX.XX.XX closed.

結構これをtmux上で実現するも大変だったのでプラグイン化しました。

こだわったところとしてタイムスタンプがmillsecondsで表示されるってところ(これをするためにperlを埋め込みました)と、
なんとSSHを切断するとログファイルを記述をやめます。トランザクション処理をする、ここがすごい。

他にも、何行か表示されるコマンドだけ証跡として取りたい際に便利です。
まぁほぼSSH用かな。

バグとかいくらでもあると思いますが、まぁこういうやり方があるよってことで。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4