基本上,我希望获取在我的 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
了解有关在启动期间读取哪些文件的更多信息)。