利用PROMPT_COMMAND记录每个用户执行的历史命令

在/etc/profile里加入以下几行

export HISTORY_FILE=/var/log/command-`date ‘+%y-%m-%d‘`.log
export PROMPT_COMMAND=‘{ date "+%Y-%m-%d %T ##### USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE‘
chmod a+w $HISTORY_FILE

export PROMPT_COMMAND=‘{ date "+[ 20150604 01:36:02 ] `history 1 | { read x cmd; echo "$cmd                  USER:$USER from ip:$SSH_CLIENT $SSH_TTY"; }`"; } >> /root/test.log‘

export HISTORY_FILE=/var/log/command-`date ‘+%y-%m-%d‘`.log
export PROMPT_COMMAND=‘{ date "+%Y-%m-%d %T $(history 1 | { read x cmd; echo "$cmd USER:$USER FROM IP:$SSH_CLIENT PS:$SSH_TTY"; })"; } >>$HISTORY_FILE‘

添加完成,保存退出,然后使用如下的命令使之生效:

#. /etc/profile

# source /etc/profile

注意:如果没有报错说明成功了。

然后每个用户执行的历史命令就会存在以当前日期命名的log文件中。

时间: 2024-10-29 19:08:06

利用PROMPT_COMMAND记录每个用户执行的历史命令的相关文章

用日志记录Linux用户执行的每一条命令(history)

工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案.这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器 第一种方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # vi /etc/profile #设置history格式 export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S

shell脚本中切换用户执行相应的命令或者shell脚本的方法

通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c  或 -s 比如: # su - oracle -c "pwd"/home/oracle 或 su - oracle -s /bin/sh test.sh 此时执行的test.sh中相关命令要在bin/sh下,换句话说,bin/sh支持的命令才能执行. 当然我们可以将结果重定向到其他的文

shell历史命令记录功能

在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash-history文件中,通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同事,在服务器遭受黑客攻击后,也可以通过这个命令或文件查询黑客登录服务器所执行的历史命令操作,但是有时候黑客在入侵服务器后为了毁灭痕迹,可能会删除.bash_history文件,这就需要合理保护或备份.bash_history文件 让history命令自动记录所有sh

Linux命令高效操作(2)-妙用历史命令

本希望把Linux高效操作这一个系列文章命名为unix-like命令高效操作,但是后来发现本人并没有在多数的unix-like平台实践过.本着实践第一的精神,就不把话题扯那么大了,决定更名为"linux命令高效操作",哈哈.废话不多说,我的实验系统:Linux之centos7. 今天我想聊的是每个用过Linux命令操作的同学或许都知道的一个存在:历史命令.什么是历史命令呢?通俗简单的说,就是你执行过的命令的历史.大家最常见的用处就是使用上下方向键进行命令的切换喽!刚接触命令行操作的同学

回到上次目录、历史命令查找快捷方式及执行时间显示设置、查看系统版本

一.回到上次操作的目录 # cd -进入上次访问目录 二.历史命令搜索操作快捷键: [Ctrl + r], [Ctrl + p], [Ctrl + n]在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(reverse-i-search), 此时你尝试一下输入你以前输入过的命令,当你每输入一个字符的时候,终端都会滚动显示你的历史命令.当显示到你想找的合适的历史命令的时候,直接 [Enter],就执行了历史命令.另外, [Ctrl + p] 或 [Ctrl + n] 快速向前或向后滚动查

linux回到上次目录与历史命令查找快捷方式

# cd -进入上次访问目录 二.历史命令搜索操作快捷键:[Ctrl + r], [Ctrl + p], [Ctrl + n] 在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(reverse-i-search), 此时你尝试一下输入你以前输入过的命令,当你每输入一个字符的时候,终端都会滚动显示你的历史命令.当显示到你想找的合适的历史命令的时候,直接 [Enter],就执行了历史命令. 另外, [Ctrl + p] 或 [Ctrl + n] 快速向前或向后滚动查找一个历史命令,对于快

linux历史命令查找快捷方式

一.回到上次操作的目录# cd -进入上次访问目录 二.历史命令搜索操作快捷键:[Ctrl + r], [Ctrl + p], [Ctrl + n] 在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(reverse-i-search), 此时你尝试一下输入你以前输入过的命令,当你每输入一个字符的时候,终端都会滚动显示你的历史命令.当显示到你想找的合适的历史命令的时候,直接 [Enter],就执行了历史命令. 另外, [Ctrl + p] 或 [Ctrl + n] 快速向前或向后滚动查

ORACLE 记录连接用户的IP地址以及登录失败用户的IP地址

前言:实现的功能主要是,oracle登录成功记录登录用户ip地址,登录失败记录登录失败ip地址 1,需要建立一个触发器记录登录成功的客户端用户的ip地址 大家都知道在v$session 中记录着客户端的机器名称,但是没有IP , 如果记录clinet ip 呢?先运行DBMS_SESSION 过程包注册,然后执行存储过程on_logon_trigger,这样当客户端登陆后,在v$session的client_info列会记录其相应的IP信息. 利用 DBMS_SESSION 过程包,先执行 BE

Linux 查看所有登录用户的操作历史

在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据.这时候通过查看历史记录(命令:history)是没有什么意义了(因为history只针对登录用户下执行有效,即使root用户也无法得到其它用户histotry历史).那有没有什么办法实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢?答案:有的. 通过在/etc/profile里面加入以下代码就可