Linux中将执行过的命令记录到日志并发送到服务器的方法_LINUX_操作系统

这篇文章主要介绍了Linux中将执行过的命令记录到日志并发送到日志服务器的方法,包括对缓存的删除处理

Linux中将执行过的命令记录到日志并发送到服务器的方法_LINUX_操作系统

这篇文章主要介绍了Linux中将执行过的命令记录到日志并发送到日志服务器的方法,包括对缓存的删除处理等功能的实现,需要的朋友可以参考下

工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程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=1while read line; do((k++))logger -t `whoami`_shell_cmd \”$line\” done < $tmpfilerm -f $tmpfile(如果还有其它用户需要监控,则重复第二步骤)第三步:把日志发送给远程主机(可选)复制代码代码如下:# vi /etc/rsyslog.conf #增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议 *.* @192.168.0.1 不足之处:1. 不能实时记录命令并发送log2. 要记录终端桌面下的命令需要重启。=========

本文为网络共享文章,如有侵权请联系邮箱485837881@qq.com

作者: 佚名

为您推荐

返回顶部