Windows 上で複数のログ ファイルを (ssh 経由で) 同時に監視していますか?
-
01-07-2019 - |
質問
poderosa (.NET ターミナル アプリ) を使用して、複数の Linux/solaris サーバー上のログを監視しました。このアプリケーションは現在メンテナンスされておらず、いくつかの問題が発生しています。
他のユーザーがリアルタイムで複数のログを同時に監視するために何をしているのか疑問に思っています(tail -f logfileのように)。いくつかの SSH テールをタブ/カスケードできるようにしたいと考えています。
ありがとう
解決
使用できます パテ接続マネージャー PuTTy にタブを追加します。次に、SSH でマシンに 2 回接続し、Tab キーで前後に移動します。
他のヒント
1 つのサーバーに SSH 接続して、次を使用することもできます。 マルチテール そこから他のすべてのサーバーのログを追跡します。
いずれかのサーバーに SSH で接続し、そこで screen を実行します。画面を複数のウィンドウに分割し、それぞれのウィンドウで次のことを行うことができます。
ssh serverX tail -f /path/to/log/file
この方法の付随的な利点は、接続するたびにテールを再起動する必要がなく、実行中の画面セッションに再接続するだけで済むことです。
bash から次のことができます (保存先 ~/.bashrc
か何か):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
次に、シェルから、追跡するログを定義します。
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
次に、フォロワーをアクティブにします。
[dsm@localhost:~]$ activate-followers test1 test2 test3
関数の使用を終了するには CTRL+C
, バックグラウンドプロセスを停止するには、次を使用します。
[dsm@localhost:~]$ stop-followers
注1:これは、ボックスに公開キー認証が設定されていることを前提としています。
注2:activate-followers 関数を終了した後に実行されたままになっているすべてのジョブを強制終了する必要があります。提供されている関数はすべてのバックグラウンドジョブをブルートフォースで強制終了するため、これを手動で実行することをお勧めします。
注3:これは、cygwin をインストールすることで取得できる、UNIX のような環境が動作することを前提としています。
シェルスクリプトで Lisp を実行できないなんて誰が言ったのでしょう ;-)
サイドログでチェックアウトできます。
私が作成した Java ツール。SSH を使用してローカルおよび遠隔のログ ファイルを読み取ることができます。使い方はとても簡単です。
さらにいくつかの説明: https://github.com/pschweitz/insidelog/wiki
オペレーティング システムに対応するバージョン、または Java ランタイム内で実行可能なネイティブ jar リリースをダウンロードするだけです (Java 8_40 以降が必要)。
https://github.com/pschweitz/insidelog/releases
完全なドキュメントが見つかります (Github のページに埋め込まれている、または Github のページ内にもあります)。
まず頭に浮かぶのは2つの選択肢です。
お気に入りの SSH アプリ (Putty、cygwin の ssh など) を選択し、マシンにログインします。
1.各ログの SSH (マシン上で多数のウィンドウが開かれるか、アプリに応じてタブが開きます)
2.一度SSHして使用してください 画面.
実際に両方のログを同時に表示する必要があり、タブが問題外である場合は、LogResolveMerge.pl という Perl スクリプトをインストールできます。2 つのログが結合され、出力が STDOUT にダンプされます。ただし、これはリソースを大量に消費するため、ログを末尾に出力することを目的としている場合は、あまり効果的ではない可能性があります。