リモートホストのtail -f出力を無期限にキャプチャする方法

リモートホストのtail -f出力を無期限にキャプチャする方法

ファイルに出力を書き込むリモート組み込みホストを監視しようとしています。/var/log/myapp.log

コンソールの電源が数時間切れることがあります。アプリケーションが終了して再起動することがあります。

私のローカルコンピュータで更新されたmyapp.logコンテンツをリアルタイムでキャプチャしたいと思います。

私のデフォルトスクリプトは次のことを行います。

ssh user@remote_host_ip 'tail -f /var/log/myapp.log' | tee -a ~/logs/myapp.log

これは、リモートホストがすでに動作していてSSHを介して接続できる単純な場合に機能します。成功するまでSSHを介してリモートホストに接続しようとし、コマンドを実行してtail -f ...ローカルから出力をキャプチャしたいと思います。リモートホストの電源が切れると、プログラムが再実行されるのを防ぎたいと思います。

autosshこれまで検索してみると、 との組み合わせを使いたいようですscreen

rscreenautosshに付属のスクリプトを試してみましたが、運がありませんでした。以下は、他のパラメータを使用してリモートホストでコマンドを実行する修正スクリプトです。変更されたスクリプトを呼び出しますrscreen_myapp

#!/bin/sh
#
# MODIFIED (not working) sample script to use autossh to open up a remote screen
# session, or reconnect to an existing one.
#
# $Id: rscreen,v 1.4 2002/05/07 17:54:13 harding Exp $


autossh -M 20004 -t $1 "screen -e^Zz -D -R -X $2"

しかし、実行すると、次のような./rscreen_myapp remoteuser@remotehost "tail -f /var/log/myapp.log"結果が得られます。

Agent pid 28990
Identity added: /home/localuser/.ssh/id_rsa (/home/localuser/.ssh/id_rsa)
No screen session found.
Connection to 10.10.3.9 closed.

画面のせいで苦労していて本当に混乱しています。私が何を間違っているのでしょうか?引数を誤って使用していますか-X?それとも別のことをする必要がありますか?どういうわけかこのファイルを利用する必要がありますかscreenlog.n? (私は.n固有の識別子を使用しないようにし、ローカルコンピュータでmyapp.logを使用することを好みます。)

結局のところ、このスクリプト/プログラムは私のバックグラウンドで自動的に実行されます。地元のマシン。したがって、ローカルシステムが開いている間にリモートシステムのログを無期限にキャプチャ/ミラーリングしようとします。

ベストアンサー1

おすすめ記事