`

用日志记录Linux用户执行的每一条命令(history)

阅读更多

工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器

第一种方法

 # vi /etc/profile
#设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| \
awk '{print $NF}'|sed -e 's/[()]//g'`] "
#记录shell执行的每一条命令
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
    export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
    logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'

 

 

第二种方法

第一步:全局设置(这是一次性设置,需要root用户权限)

# vi /etc/profile
#用户登录时执行此脚本
#设置history显示格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null\
| awk '{print $NF}'|sed -e 's/[()]//g'`] "
#登录时清空当前缓存 echo "" > .bash_history

 

第二步:不同用户分别设置

# source /etc/profile
# vi /home/user1/.bash_logout
  
#当用户退出登录时会执行此脚本
tmpfile="/tmp/`whoami`_history.tmp"
#把格式化的history记录到文件里
history > $tmpfile
 
#读取文件,一行一行把文件内容发送到给syslogd。
#不要试图用"history | logger"或"logger -f $tmpfile"来替代下面的代码,
#否则将只能记录前200行。
k=1
while read line; do
((k++))
logger -t `whoami`_shell_cmd "$line"
done < $tmpfile
rm -f $tmpfile
(如果还有其它用户需要监控,则重复第二步骤)

第三步:把日志发送给远程主机(可选)

# vi /etc/rsyslog.conf
 #增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议
 *.*  @192.168.0.1
 
不足之处:
1. 不能实时记录命令并发送log
2. 要记录终端桌面下的命令需要重启。
=========

history记录日志

分享到:
评论

相关推荐

    如何让linux的 history命令显示时间记录

    如何让linux的 history命令显示时间记录如何让linux的 history命令显示时间记录

    Linux基础课件Linux系统历史命令history命令

    Linux基础课件Linux系统历史命令history命令共10页.pdf.zip

    Linux 系统history命令保存

    所有用户执行的命令实时保存在一个文件中,文件内容如下: 2016-03-01 17:34:42 ##### USER:root IP:172.16.50.146 8160 22 PS:/dev/pts/1 ppid=2037 pwd=/root #### wget ...

    linux下history(历史)命令用法详解.docx

    Linux 中的 history 命令是命令行中非常实用的工具,可以帮助用户快速地执行以前的命令,提高工作效率。下面将详细介绍 history 命令的 15 个用法。 1. 使用 HISTTIMEFORMAT 显示时间戳 在 Linux 中,history 命令...

    Linux查看History记录加时间戳的小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如 [root@servyou_web ~]# history | more 6 ./test.sh 7 vim test.sh 8 ./test.sh 但是这里只显示了...

    Linux命令使用技巧

    * ctrl+c:取消命令执行 * ctrl+d:关闭 Shell * ctrl+shift+鼠标选中+c:复制选中字符 * ctrl+shift+v:粘贴 * ctrl+a:快速移动光标到行首 * ctrl+e:快速移动光标到行尾 * ctrl+u:快速删除当前所在字符之前的...

    linux命令速查手册.pdf

    当我们运行 `history` 命令时,它自动在每条命令前加一个数字。如果我们想运行前面的某条命令,而且也知道 `history` 赋予它的数字,这时只需要在感叹号后面跟上命令的历史编号,就能再次运行这个命令。例如: ``` ...

    rsyslog所有用户日志审计

    对于普通用户的日志审计,可以使用bash的history功能来记录用户的命令操作记录。在上面的部分内容中,添加了以下命令: vim /etc/profile 在/etc/profile 末尾添加export HISTORY_FILE=/var/log/userAudit.log ...

    history保存用户操作日志,登陆时间,防止会话退出时覆盖

    linux系统history记录保存用户操作日志,登陆时间,防止会话退出时覆盖 以下是代码: #说明: /etc/profile 中结尾添加如果下指令 #保存并执行如下使之生效:source /etc/profile #history #HISTFILESIZE:表示文件的...

    如何查看SAP用户登录日志记录

    SAP系统,默认情况下只能查看用户的上次登录记录, 但之前的登录并不会进行记录。本文介绍了如何设置审计参数文件,并利用审计日志来查看用户在某段时间内的登录情况。

    linux基本命令大全.pdf

    a 重复执行上一条以 a 为首的命令 * !$ 截取上一条命令的结果 * Ctrl+r 在 history 表中查询用户和组 课程外知识 * find -amin n 查找系统中最后 N 分钟访问的文件 * find -atime n 查找系统中最后 n*24 小时访问...

    linux 之history命令用法

    汇总部分history用法,其中包括输入带时间格式history内容,以及history中保存的命令的再次调用的方法等等

    linux服务器清空MySQL的history历史记录 删除mysql操作记录

    1. 不再保存历史记录或者减少历史记录保存数量修改/etc/profile将HISTSIZE=1000 改成 0 或 要保留的数量清除用户home路径下的 .bash_history 代码如下:echo ” &gt; /home/user/.bash_history 2. 立即清空里的history...

    操作系统安全:history历史命名完整性配置.docx

    这时我们就需要对history进行一些配置,让它报告命令执行的具体时间。 history [选项] [历史命令保存文件] history : 打印历史命令 选项: -c : 清空历史命令 -w : 把缓存中的命令写入历史命令保存文件~/.bash_...

    shell-history, 获取用户的shell的命令历史记录.zip

    shell-history, 获取用户的shell的命令历史记录 壳历史 获取用户 shell的命令历史。安装$ npm install --save shell-history用法const shellHistory = require('shell-history'

    cmd操作命令和linux命令大全收集

    at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 finger username @host 查看最近有哪些用户登陆 telnet ip 端口 远和登陆服务器,默认端口为23 open ip 连接到IP(属telnet登陆后的...

    基础的Linux常用命令

    eg: history //可以显示用户过去使用的命令 17. !! 执行最近一次的命令 18. mkdir命令 eg: mkdir netseek //创建netseek这个目录 19. tar 解压命令 eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个...

    Linux 中如何使用 alias 命令.doc

    Linux 中的 alias 命令是一种功能强大的命令,能够帮助用户简化长命令、记住复杂名称的命令、节省时间等。下面将详细介绍 alias 命令的使用方法和场景。 1. 创建 alias alias 命令用于创建别名,简化长命令。例如...

    The history of Linux

    GNULinux Distribution Timeline和The history of Linux两张图,清晰说明了Linux发行版本的变迁和Linux的历史

    2022年优秀-Linux终端常用命令综述.pptx

    history命令用于显示当前系统的命令历史记录。 4.5 mesg命令 mesg命令用于控制当前用户的消息接受情况。 Linux终端常用命令综述涵盖了Linux操作系统中最基本的命令,包括信息显示命令、系统管理命令和其他常用...

Global site tag (gtag.js) - Google Analytics