Tee 所有 SSH 会话输出(默认情况下)

Tee 所有 SSH 会话输出(默认情况下)

目前我正在尝试做一些类似于 PuTTY 在 Windows 上所做的事情。我想捕获 ssh 会话信息。我希望能够根据时间在日志文件中查看标准输出,并根据主机分隔日志。现在 tee 运行良好,但您始终需要记住键入 tee 以及日期和目录。那不太实用。有人知道有什么办法可以做到我所要求的吗?我考虑将本地命令选项添加到我的 ssh 配置中,但正如您想象的那样,它不能(不能)用于捕获输出,因为它似乎在 ssh 会话启动后运行命令。

答案1

您可以创建一个包装器来代替ssh 命令。它可能是:

tssh() { ssh "$@" | tee "$(date +%m_%Y_%H:%M:%S)"; }

您现在可以tssh与通常与 一起使用的所有选项一起 使用ssh。 SSH 会话将记录到文件中,例如 08_2019_16:43:50.请参阅格式说明符man date的说明。+

但是,将主机名嵌入到输出日志文件的名称中比较困难。您可以使用这样的包装器,但需要记住始终将主机作为第一个参数传递:

tssh()
{
    if [ ! "$#" -eq 1 ]
    then
    printf "Error: Host missing\n" >&2
    return 0
    fi

    ssh "$@" | tee "$1_$(date +%m_%Y_%H:%M:%S)"
}

例如:

   $ tssh localhost -vv
   $ logout

输出日志文件的名称中将包含主机名,例如:

   localhost_08_2019_16:47:41

相关内容