使用 ssh 的 history 命令并获取带有正确时间戳的输出

使用 ssh 的 history 命令并获取带有正确时间戳的输出

可能重复:
使用 ssh 的 history 命令并获取带有时间戳的输出

基本上,我希望获取在我的 ssh 服务器上执行的所有命令的记录,并附带正确的时间戳。我尝试过的代码是:

ssh -i private_key user@ip 'export HISTFILE=~/.bash_history;export HISTTIMEFORMAT='%D-%T' ;set -o history; history' > myfile.txt

当我第一次登录然后使用历史命令时,我会获得包括日期和时间在内的所有详细信息。但是,当我使用此代码时,我得到的不是执行命令的时间,而是当前时间(即,如果我在 3 点执行此代码,则所有命令的时间戳都会为 3 点)

答案1

正如我所说的我的答案你的或多或少相同的问题

如果您在使用会话时没有设置HISTTIMEFORMAT环境变量,则命令时间将不会被保存,您当然也无法看到它们。默认情况下,对于每个缺少时间指示符的命令,当前时间将作为命令时间打印。

如果您查看该~/.bash_history文件,您可以查看是否已为会话激活时间戳。每隔一行将以 # 开头,后跟时代下一个命令的时间。

那么:查看远程~/.bash_history文件。它是否每隔一行都包含时间戳?如果没有,则说明您没有为命令保存任何时间戳信息,也无法显示它。

您需要为HISTTIMEFORMAT要记录时间的每个会话在远程位置设置环境变量。例如,作为建议~/.bash_profile(请参阅“调用”部分,man bash了解有关在启动期间读取哪些文件的更多信息)。

相关内容