文档章节

提升服务器安装:自定义history命令历史功能

SAMZONG
 SAMZONG
发布于 2017/04/23 22:55
字数 572
阅读 8
收藏 0

  相信大家都知道linux的history命令可以查看用户的曾经执行的命令历史,而默认在用户的home下有个.bash_history的文件存放用户的命令历史,但是他的功能太简单了,下面是我从其他网页整理的脚本只需要放到你的/etc/profile文件尾部即可。

    我们想要的功能:

        记录命令执行时间,和用户

        记录更多的命令历史

        history实时查看执行的命令


####大篇幅代码预警,非战斗人员请迅速撤离####

# The frist section
# Set the history file size.
export HISTFILESIZE=999999999    #Bigger the better.
# Set the history order number.
export HISTSIZE=999999           #Bigger the better.
# Real-time record history command, prevent overlap between multiple users.
export PROMPT_COMMAND="history -a"
#Record each command execution time and user.
export HISTTIMEFORMAT="%F %T `whoami`  "



# The second section
# Check for interactive bash and that we haven't already been sourced.
[ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$BASH_COMPLETION_COMPAT_DIR" ] && return

# Check for recent enough version of bash.
bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}
if [ $bmajor -gt 4 ] || [ $bmajor -eq 4 -a $bminor -ge 1 ]; then
    [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
        . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
    if shopt -q progcomp && [ -r /usr/local/share/bash-completion/bash_completion ]; then
        # Source completion code.
        . /usr/local/share/bash-completion/bash_completion
    fi
fi
unset bash bmajor bminor
history
USER=`whoami`
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 /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null


第一段代码会让你的命令历史变成这样:

wKioL1WWHuDhoDEcAAF-_ykgXkw616.jpg

第二段代码会让你的history文件变成这样:

在/var/log/history/目录下会以每个用户的用户名创建一个文件夹,然后用户每一次登录执行的历史命令都会保存成一个文件,文件名包含了“root@192.168.16.221_20150703_03:55:56”登录用户、登录IP以及登录时间。

当然,这个history的位置是可以自定义的,建议有shell脚本经验的童鞋可以修改。


好了,以上是所有内容了.

如果你有更好的idea,欢迎来和我分享。E-mail:luchuanjia@msn.com




本文出自 “一杯白开水” 博客,请务必保留此出处http://ultraera.blog.51cto.com/6640392/1670531

© 著作权归作者所有

SAMZONG
粉丝 3
博文 33
码字总数 24653
作品 0
长宁
个人站长
私信 提问
spark ui 监控

运行时作业查看 每一个SparkContext启动一个web UI,默认情况下在端口4040, 显示关于应用程序的有用信息,包括: · 调度器阶段和任务的列表 · RDD大小和内存使用的概览 · 环境信息。 · 关于...

张欢19933
2016/02/19
640
2
[7]DevOps 自动化运维工具Chef---如何安装Chef的Report?

Chef Report是一个非常有用的功能,它能检测所有的chef节点的任务执行情况: 成功,失败,终止。 而且能记录客户端节点的执行情况。Chef report的最低执行版本如下: Chef server 12 chef-cl...

chancein007
2016/09/22
0
0
shell基础--1

shell介绍 Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以...

在也不会是我
2018/01/10
7
0
shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向

shell介绍 shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。在计算机硬件之间还有一层东西——系统内核。如果把计算机硬件比作一个人的躯体,那系统内核就是人的大脑。...

网虫变网工
2017/11/15
0
0
8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向

8.1 shell介绍 1. shell是一个命令解释器,提供用户和机器之前的交换 2. 每个用户都可以有自己特定的shell 3. CentOS7默认shell是bash(Bourne Agin Shell); shell还有zsh、ksh等 zsh、ksh这两...

主内安详
2018/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部