您的位置:首页 > 运维架构 > Shell

按照时间和登录ip地址来记录不同用户的历史命令的脚本——shell(1)

2013-01-16 16:52 651 查看
用途:linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了。以下方法可以实现通过记录登陆IP地址和所有用户登录所操作的历史命令来记录!

分析:首先要从命令的结果里得到用户名和登录该服务器的客户端ip地址,想想什么命令可以查到当前登录的用户呢。有好多,比如w;who等都可以实现。我们这里使用who,who的参数比较多,而且比较灵活。还涉及的系统自带的PWD和LOGNAME还有HISTORYSIZE等。

方法:在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,因为profile是登录时执行的家环境。

PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/history ]
then
mkdir /tmp/history
chmod 777 /tmp/history
fi
if [ ! -d /tmp/history/${LOGNAME} ]
then
mkdir /tmp/history/${LOGNAME}
chmod 300 /tmp/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="/tmp/history/${LOGNAME}/${USER_IP} history.$DT"
chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null

用户从客户机登录这台机器的时候都会在/tmp/history/下面建立自己的用户名的目录,目录下面有每次登录这台机器的文件,名字格式为ip地址\history.登录日期_登录时间,如192.168.10.15\ history.20130116_184144。文件里记录着历史命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息