如何获取 ssh 会话中发出的命令

如何获取 ssh 会话中发出的命令

我需要列出在“ssh 会话”中执行的所有命令。我使用多个 ssh 会话登录远程服务器。因此,当我从一个会话注销时,我需要获取在该会话中执行的命令。

有没有什么办法呢?

答案1

如果您在远程服务器上运行 bash,它会为您保留历史记录,您可以使用命令检索该历史记录history

如果您编辑 ~/.bash_profile 以包含以下行:

export HISTTIMEFORMAT="%h/%d -- %H:%M:%S "

您的历史记录还将有时间戳(以便更容易地了解您在当前会话中运行的内容以及过去的历史记录)。

当 bash 关闭时,它将运行您的~/.bash_logut脚本。如果您编写此脚本的最后一行:

history

当您关闭连接时,您最后想到的就是您的历史记录 - 不幸的是,不仅仅是来自当前会话,但时间戳应该可以帮助您确定哪些命令来自当前会话以及哪些是旧的。

如果你不介意在会话之间丢失远程计算机上的历史记录,你可以添加

unset HISTFILE

到您的登录脚本。当未设置 HISTFILE 时,bash 不会将历史记录保存到文件中。这意味着history在注销时运行的只能显示当前会话。

答案2

使用 PuTTY(或其他 ssh 客户端),您可以将其配置为“保存”所有会话信息。

在PuTTY中:

Session --> Login --> Session Login --> All session output

另一个选择是执行命令

# history >> history.log

在离开 ssh 会话并下载文件history.log之前

这将列出最后执行的命令。

您甚至可以让历史记录知道要记住多少条命令

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

希望有帮助

答案3

您可以在 .bashrc 中创建特定于会话的历史记录文件

答案4

Gonzalo Murillo 的第二个建议是使用历史命令仅捕获您输入的内容(而不是命令输出)。

如果您想在连接到任何服务器之前构建一个命令列表,您可以使用 python 轻松编写脚本来自动化整个过程(如果您不需要任何交互)。

相关内容