专栏首页北京马哥教育用日志记录Linux用户执行的每一条命令(history)

用日志记录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. 要记录终端桌面下的命令需要重启。 ==========

原创文章,转载请保留原文链接:http://www.wenwenyun.com/opration/shell/2015/0429/3686.html

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LaTeXila:Linux 的多语言 LaTeX 编辑器简介

    豌豆贴心提醒,本文阅读时间7分钟 LaTeXila 是一个多语言 LaTeX 编辑器,专为那些偏爱 GTK+ 外观的 Linux 用户设计。这个软件除了操作简...

    小小科
  • 在服务器上排除问题的头五分钟(干货)

    遇到服务器故障,问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手: 一、尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这...

    小小科
  • 20行 Python 代码实现验证码识别

    一、探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如...

    小小科
  • TabNine 利用机器学习补全代码的编辑器插件

    官网地址 https://tabnine.com/ ,在官网上有一些对代码补全的视频

    icepy
  • 在 2018 年初,让我们再谈谈大前端的趋势

    Phodal
  • ICLR 2020| VL-BERT:预训练视觉-语言模型

    今天介绍中国科学技术大学和微软亚洲研究院朱西洲老师团队在ICLR2020的论文,该研究提出了一种新的图形神经网络的几何聚合方式,其核心思想是:在bert的基础上...

    DrugAI
  • 【基础教程】python 写一个斐波纳契数列

    其中代码 a, b = b, a+b 的计算方式为先计算右边表达式,然后同时赋值给左边

    matinal
  • DataGrid鼠标事件方法

    JS文件源码:GridColorControl.js =====================================

    Java架构师必看
  • 【详细】Android热更新Bugly集成配置

    上一篇文章说道tinker的热更新,可是少了点补丁包的管理,这一篇文章介绍的bugly就是增强版的,更加方便你集成tinker和包括了补丁包的后台管理。 为什...

    ppjun
  • jenkins快速入门

    jenkins是一个非常老牌的ci/cd工具,它是一款使用Java写的开源自动化应用。可以通过界面或Jenkinsfile告诉它执行什么任务,何时执行,理论上,...

    机智的程序员小熊

扫码关注云+社区

领取腾讯云代金券