在Windows上同时监视多个日志文件(通过ssh)?

时间:2020-03-06 14:28:26  来源:igfitidea点击:

我使用poderosa(.NET终端应用程序)来监视多个linux / solaris服务器上的日志。该应用程序目前尚未得到维护,我遇到了一些问题。

我想知道其他用户如何同时监视多个日志(如tail -f logfile一样)。我希望能够将一些ssh尾部制表位/级联。

谢谢你

解决方案

我们可以使用Putty Connection Manager将选项卡添加到PuTTy。然后两次SSH进入计算机,并来回切换。

设置教程

我们可以仅将SSH SSH到一台服务器,然后从那里使用mutailtail将其他所有服务器上的日志拖尾。

首先想到两个选项。

选择我们喜欢的SSH应用程序(putty,cygwin中的ssh等)并登录到计算机。
1.每个日志使用SSH(在计算机或者选项卡上打开的许多窗口取决于应用程序)
2. SSH一次并使用屏幕。

SSH到服务器之一,在其上运行屏幕。然后,我们可以将屏幕拆分为多个窗口,每个窗口都可以

ssh serverX tail -f /path/to/log/file

这种方法的附带好处是,我们不必每次连接都重新启动尾巴,而只需重新连接到运行中的屏幕会话即可。

如果实际上我们需要同时查看两个日志,并且无法使用选项卡,则可以安装一个名为LogResolveMerge.pl的perl脚本。它将两个日志合并在一起,并将输出转储到STDOUT。但是,这将占用大量资源,并且如果我们打算在日志后尾添加-f,效果可能不太好。

我们可以从bash中保存(保存在〜/ .bashrc之类的文件中):

function create-follower () {
    local _NAME=;
    local _USER=;
    local _HOST=;
    local _PATH=;

    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]+)\].*/%/') ;
    fi ;
}

然后从shell中,定义要遵循的日志:

[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:退出激活跟随器功能后,我们将必须杀死所有仍在运行的作业。我们可能需要手动执行此操作,因为提供的功能会在所有后台作业上造成强行杀死

注意3:这里假设有一个类似unix的工作环境,我们可以通过安装cygwin来获得

谁说你不能在shellscript中做lisp ;-)