由于针对服务器操作命令,做有证可查,需要对各个ldap用户,以及系统用户曾经使用过的命令,进行记录备份,并且要求每条命令有具体的操作时间。

一、history命令的默认输出如下

  986  service httpd start
  987  vi /usr/local/apache/conf/httpd.conf
  988  service httpd start
  989  ps aux
  990  vi /usr/local/apache/conf/httpd.conf
  991  service httpd start
  992  vi /usr/local/apache/conf/httpd.conf
  993  vi /etc/sysconfig/network
  994  service httpd start
  995  vi /usr/local/apache/conf/httpd.conf
  996  vi /etc/sysconfig/network
  997  hostname localhost
  998  exit
  999  history
 1000  set
 1001  history

这样的结果是因为我们定义了变量

HISTFILESIZE=1000   ###.bash_history 文件大小最大1KB
HISTSIZE=1000         ### 命令条数最多1000条

 

 

二、所以在服务器上重新定义一下变量

vi /etc/profile

###插入以下内容

HISTSIZE=10000 
HISTFILESIZE=1000000000
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "  ### 输出命令时候带时间格式

 

##保存后 执行  source /etc/profile

此时查看 history 命令输出

 990  2011-03-29 16:05:38 vi /usr/local/apache/conf/httpd.conf
  991  2011-03-29 16:05:38 service httpd start
  992  2011-03-29 16:05:38 vi /usr/local/apache/conf/httpd.conf
  993  2011-03-29 16:05:38 vi /etc/sysconfig/network
  994  2011-03-29 16:05:38 service httpd start
  995  2011-03-29 16:05:38 vi /usr/local/apache/conf/httpd.conf
  996  2011-03-29 16:05:38 vi /etc/sysconfig/network
  997  2011-03-29 16:05:38 hostname localhost
  998  2011-03-29 16:05:38 exit
  999  2011-03-29 16:05:39 history
 1000  2011-03-29 16:08:00 set
 1001  2011-03-29 16:08:17 history
 1002  2011-03-29 16:09:11 set
 1003  2011-03-29 16:09:58 ls -a
 1004  2011-03-29 16:10:44 cat .bash_history
 1005  2011-03-29 16:10:49 cat .bash_history |wc -l
 1006  2011-03-29 16:11:52 vi /etc/profile
 1007  2011-03-29 16:12:36 source /etc/profile
 1008  2011-03-29 16:12:37 ls
 1009  2011-03-29 16:12:38 history

##已经有了 时间格式 而且超出1000条。

 

三、这样每天在crontab中对各个用户的 .bash_history 进行备份就可以满足需求了。

 

ok ,有需要的py,可以动手了哈。。。