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

pee*_*eep 6 linux ssh terminal

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

有什么选择吗?

Jam*_*ley 7

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

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

export HISTTIMEFORMAT="%h/%d -- %H:%M:%S "
Run Code Online (Sandbox Code Playgroud)

您的历史记录也将有时间戳(以便更轻松地确定您在当前会话中运行的内容以及古代历史记录)。

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

history
Run Code Online (Sandbox Code Playgroud)

当您关闭连接时,您对您脱口而出的最后一件事将是您的历史记录 - 不幸的是,不仅来自当前会话,而且时间戳应该可以帮助您确定哪些命令来自当前会话,哪些命令是旧的.

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

unset HISTFILE
Run Code Online (Sandbox Code Playgroud)

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


小智 0

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

在腻子中:

Session --> Login --> Session Login --> All session output
Run Code Online (Sandbox Code Playgroud)

另一种选择可能是执行命令

# history >> history.log
Run Code Online (Sandbox Code Playgroud)

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

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

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

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450
Run Code Online (Sandbox Code Playgroud)

希望有帮助