![将 bash_history 记录到所有用户的私人数据库中?](https://linux22.com/image/1343144/%E5%B0%86%20bash_history%20%E8%AE%B0%E5%BD%95%E5%88%B0%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E7%9A%84%E7%A7%81%E4%BA%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%EF%BC%9F.png)
我希望能够设置一个 MySQL 数据库并按用户名和命令记录服务器上发出的所有命令。这可能吗?如果可以,我该如何设置?
答案1
你可以
PROMPT_COMMAND
如果你想玩这个即时的(每行),这可能是这样的:PROMPT_COMMAND='echo mysql -c "INSERT $(history 1|sed "s/^ *[0-9]* *//")"'
这可以存储在您的
$HOME/.bashrc
。$HOME/.bash_logout
如果你喜欢的话可以玩消化在每个logout
。这可以让你开始自己的脚本,尝试添加这样的内容到你的.profile
if [ "$HISTFILE" ] ;then export OHISTFILE="$HISTFILE" export HISTFILE=$(mktemp $HOME/.bash_history_XXXXXXXX) touch $HISTFILE history -a cat >>"$OHISTFILE" "$HISTFILE" HISTFILE="$OHISTFILE" HISTFILESIZE=$HISTFILESIZE mysql -c "INSERT ... $(<$HISTFILE).." rm $HISTFILE fi
答案2
如果你正在使用狂欢或者嘚,有一个项目试图实现这一点:高级 shell 历史..其令人憎恶的构建系统(阅读 Makefile在您离开之前make install
)可能是它尚未包含在发行版中的原因 - 我正在努力并将推动上游,然后报告:)
如果你想要普通 mysql cli shell 的历史记录,右包裹可能会有用:
此软件包提供了一个小型实用程序,它使用 GNU readline 库来编辑任何其他命令的键盘输入。输入历史记录在调用过程中被记住,每个命令都是分开的;历史记录补全和搜索工作方式与 bash 类似,并且可以在命令行上指定补全单词列表。