温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用日志记录Linux用户执行的每一条命令

发布时间:2021-08-04 09:15:41 来源:亿速云 阅读:135 作者:chen 栏目:系统运维

本篇内容主要讲解“怎么用日志记录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;'

怎么用日志记录Linux用户执行的每一条命令

下面是第二种方法,较笨

***步:全局设置(这是一次性设置,需要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. 要记录终端桌面下的命令需要重启。

怎么用日志记录Linux用户执行的每一条命令

到此,相信大家对“怎么用日志记录Linux用户执行的每一条命令”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI