syslog - 如何记录服务器上所有用户的所有 Bash (busybox/ash) 命令?
问题描述
我们如何在本地记录所有运行的 Bash 命令以及用户和时间戳?
我正在寻找一种使用我自己的别名集和诸如此类的东西来自定义 Ash 会话的方法。什么是 Bashbashrc
文件的 Ash 等价物?
标准解决方案不起作用:
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
- 操作系统:Linux 4.9
- 重击:.ash
- 记录器:busybox (1.27.2) & syslog-ng (3.10)
解决方案
这是用于 rsyslog:
编辑 /etc/rsyslog.conf 并放一行
local6.* /var/log/mylog
而不是 PROMPT_COMMAND 导出 PS1 在 /etc/profile 例如:
export PS1='$(RETRN_VAL=$?;logger -p local6.debug "[$$]: $(history | tail -1) [$RETRN_VAL]")\u@\h:\w\$ '
当然,您可以更改命令以从历史输出中删除不必要的字符。
推荐阅读
- r - 如何更改列表中数据框的某些元素的名称
- windows - windows中文件的“类型”属性是如何设置的?
- node.js - MongoDB retryWrites 设置代码不起作用
- c# - 添加用于填充字符串的参数 (C#)
- cmd - 使用 LibreOffice SDK 将文件从 docx 转换为 doc
- eclipse - Eclipse / PyDev 停止按钮不适用于 OSError:[WinError 6] 句柄无效错误
- sql - 即使查询不同,Postgres 也会缓存计划吗?
- html - Bootstrap中的联锁圆圈div问题
- python - 如何根据名称中的日期处理多个文件
- java - 为什么我的 Java 套接字接收的数组大小比发送的大?