Skip to content

Instantly share code, notes, and snippets.

@yuya-takeyama
Created August 24, 2012 11:17
Show Gist options
  • Save yuya-takeyama/3449306 to your computer and use it in GitHub Desktop.
Save yuya-takeyama/3449306 to your computer and use it in GitHub Desktop.
複数のホストに tail -F するヤツ

rtailF

複数ホストに ssh しながら tail -F するときにはこうしたらどう? をほんのちょっといじった。

インストール

  • パスの通ったところに保存する
  • 実行権限を与える
  • 対象ホストを ~/.bashrc なり ~/.zshrc なりに下記のように指定する
export RTAILF_HOSTS="192.168.1.1 192.168.1.2"

最後に $ source ~/.bashrc 的なことも忘れずに。

つかいかた

デフォルトは $RTAILF_HOSTS のホストが対象になる。

$ rtailF /var/log/maillog

対象ホストをアドホックに変えたいときは以下のようにする。

$ RTAILF_HOSTS="192.168.1.1 192.168.1.2 192.168.1.3" rtailF /var/log/maillog

かえたところ

  • ホストの指定に環境変数 $RTAILF_HOSTS を使うようにした
  • 第一引数で対象のファイルを指定できるようにした
  • 複数ファイルを対象にした場合、それぞれに対して ssh セッションを開くようにした
  • ssh コマンドに -tt オプションを渡すことでリモート上に tail プロセスが残る問題を解消 (Thanks to @ngyuki)
#!/bin/bash
function kill_children {
pkill -P $$;
wait;
}
trap "kill_children" EXIT
for host in $RTAILF_HOSTS
do
for file in $*
do
ssh -tt $host tail -F $file &
done
done
wait
@yuya-takeyama
Copy link
Author

複数のファイルに対応させた。

192.168.1.1192.168.1.2 が対象ホストの場合、以下のコマンドを実行すると

$ rtailF /log/1.log /log/2.log

以下のようなコマンドが実行されることになる。

$ ssh 192.168.1.1 tail -F /log/1.log
$ ssh 192.168.1.1 tail -F /log/2.log
$ ssh 192.168.1.2 tail -F /log/1.log
$ ssh 192.168.1.3 tail -F /log/2.log

@yuya-takeyama
Copy link
Author

ssh する部分を以下のようにすると、先頭にホスト名付加できる。

ssh -tt $host "tail -F $file | ruby -ne 'puts \"\\e[33m$host\\e[0m: \" + \$_;STDOUT.flush'" &

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment