时间:2021-05-24
工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程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. 要记录终端桌面下的命令需要重启。
=========
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一.日志传送概述SQLServer使用日志传送,可以自动将主服务器的事务日志备份发送到一个或多个辅助数据库上。事务日志备份分别应用于每个辅助数据库。可选的第三个
PHP程序的缓冲,而不论PHP执行在何种情况下(CGI,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。flush()函数不会对服务器或客
网络ms的意思是ping值。ms就是毫秒的意思,PING是一个常用的网络命令,PING值指的是就是从某个数据包发送到服务器开始,到收到服务器应答包为止的时间就是
服务端渲染(SSR)将一个Vue组件在服务端渲染成HTML字符串并发送到浏览器,最后将这些静态标记“激活”为可交互应用程序的过程就叫服务端渲染(SSR)服务器渲
在这里整理一下Linux中mail命令的使用。mail也是一个常用的命令,我们在很多地方都要用到它,比如定时把系统状况或日志发送到我们的邮箱里等等。首先通过he