linux远程记录终端操作记录

网上流传个这样一篇关于记录linux远程操作记录的文章:很可惜的是没有该出详细的解释,

 

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` (who -u am i 会显示系统中登陆进来的用户及登陆从哪个IP登陆进来的,这里后面过滤了就取值一个登陆进来的IP)
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/ruige ]
then
mkdir /tmp/ruige
chmod 777 /tmp/ruige
fi
if [ ! -d /tmp/ruige/${LOGNAME} ]
then
mkdir /tmp/ruige/${LOGNAME}
chmod 300 /tmp/ruige/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date '+%Y:%m:%d %r'`
export HISTFILE="/tmp/ruige/${LOGNAME}/${USER_IP} ruige.$DT"
chmod 600 /tmp/ruige/${LOGNAME}/*ruige* 2>/dev/null

这个shell脚本很简单,但如果像我一样的对history命令不了解的菜鸟,真是表示看不懂啊!

首先我不理解 HISTFILE是什么意思,更不知道设置HISTSIZE变量有什么作用?网上了查了关于history的用法也没有提及这2个变量啊,于是就想当然的以为这2个变量是自定义的,还有一个我不理解,环境变量是用户连接到shell的时候就触发的,那又怎么能记录用户的操作呢?

菜鸟总是要成长的,后来,我无意间了解了真相,供刚入门的linux菜鸟学习!

关于history的有2个系统变量 配置history:HISTFILE及HISTSIZE,

系统保存的历史事件数被保存在一个特定的系统变量中,这个变量就是HISTSIZE。这个变量的缺省值通常被设置为500。这个值可以被修改。例如:
$ HISTSIZE=10
将HISTSIZE的值重新设置为10。
历史事件被保存在一个文件中,文件名由变量HISTFILE指定。通常这个文件的缺省名是.bash_history。通过给变量HISTFILE赋值,可以指定新的文件名。

注意!普通用户的权限,如果没有权限在你指定的位置创建并且写入的话,则出错

[例】
$ echo $HISTFILE
/home/lisa/.bash_history
$ HISTFILE=”/home/lisa/newhist”
$ echo $HISTFILE
/home/lisa/newhist
以上操作先显示变量HISTFILE的值,然后赋予它新的值“/home/lisa/newhist”,以后所有的历史事件将被保存在newhist文件中。
################################################################

看到这儿你应该明白过来了吧!整个shell脚本的目的就是指定history的2个系统变量的值!这样当用户连接上shell之后,history就会一直记录用户的操作,保存到你指定的新文件里面!

 

参考来自:http://ruilinux.blog.51cto.com/4265949/845405

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1941583

你可能感兴趣的:(运维,记录终端操作,历史记录,ssh远程)