基本上,我想获取在我的 ssh 服务器上执行的所有命令及其时间的记录。我尝试过的代码是:
ssh user@ip 'export HISTFILE=~/.bash_history; set -o history; history'
我收到了所有命令,但没有收到预期的时间戳。
当我第一次登录然后使用 history 命令时,我会获得所有详细信息,包括日期和时间。当我使用 history 命令和 ssh 时,我想获得所有详细信息。我该怎么做?哦,是的,如果可能的话,我想获得历史记录而不需要导出 HISTFILE。(如果可能的话) 安装软件包不是一个选项。
答案1
两件事情:
您还需要导出例如
HISTTIMEFORMAT='%F %T '
设置显示命令历史次数。
如果你有不是
HISTTIMEFORMAT
在使用会话时设置环境变量,命令时间将不是被保存,您当然就看不到它们了。默认情况下,对于每个缺少时间指示符的命令,当前时间将被打印为命令时间。
如果您查看该~/.bash_history
文件,您可以查看是否已为会话激活时间戳。然后每隔一行将以 开头,#
后跟纪元时间下一个命令。
答案2
如果您知道 shellbash
和历史文件,.bash_history
简单的获取就足够了。
scp user@ip:.bash_history .
对于时间数据,
- 该
.bash_history
文件将携带所有会话历史数据的时间信息,这些会话均已HISTTIMEFORMAT
配置 - 我认为历史更新将带有整个会话的时间戳,该
HISTTIMEFORMAT
会话中任何时候都有配置 - 这给我们带来了一个小的限制
- 如果你有这些远程用户
bash profile
登录
export HISTTIMEFORMAT='some format'
的.bash_history
- 否则,以任何形式运行远程历史命令都不会获取时间数据 - 只是因为它
.bash_history
首先没有存储(到);它会在每个会话结束时丢失,只有命令列表被保存
- 如果你有这些远程用户
希望最后一点澄清了获取时间数据的可行性。
好消息是,如果您登录时可以看到过去会话的时间数据,则说明已配置,您无需进行任何更改。如果没有,只需在正在使用的export
中插入即可bash profile
——无需安装。