需求描述

在linux环境中,有的时候为了审计的需要,要记录谁什么时间从什么IP登录,执行了什么命令,bash的history命令就能够记录这些信息,但是在默认的情况下,是不记录时间的,所以呢,在这里记录下,对其进行改造。

操作过程

1.默认的history命令,只是显示行号,执行的命令

[root@testvm01 ~]# history | more
    3  ./test.sh
    4  ls
    5  vi nmon16e_x86_rhel65
    6  cdd /opt
    7  ls
    8  cd /opt
    9  ls
   10  cd softwares/
   11  ls
   12  cd ../app/
   13  ls
   14  cd test01/

备注:这样,就可以看到命令执行的历史,但是,看不到什么时间执行的,谁执行的。

2.使用HISTTIMEFORMAT变量来指定命令中增加时间戳

[root@testvm01 ~]# export HISTTIMEFORMAT="%F %T "      #注意: 在调用history命令时,行号 然后是HISTTIMEFORMAT的执行结果,然后是命令,注意%T后面有空格。
[root@testvm01 ~]# history | more
-- :: vi nmon16e_x86_rhel65
-- :: cdd /opt
-- :: ls
-- :: cd /opt
-- :: ls
-- :: cd softwares/
-- :: ls
-- :: cd ../app/
-- :: ls
-- :: cd test01/

备注:这样就能够将命令执行的时间记录上了。或者说,给每个命令一个时间戳。或者说,本身命令历史就是有时间戳的,只是没有显示。

3.想要记录是哪个IP操作的,对HISTTIMEFORMAT变量进行改造

[root@testvm01 ~]# export HISTTIMEFORMAT="%F %T `who am i` "   #在后面,增加who am i的执行,就是哪个ip,哪个用户登录的。
You have new mail in /var/spool/mail/root
[root@testvm01 ~]# history
-- :: root pts/ -- : (192.168.53.2) vi zabbix_agent.sls
-- :: root pts/ -- : (192.168.53.2) salt '*' state.sls init.zabbix_agent
-- :: root pts/ -- : (192.168.53.2) vi zabbix_agent.sls
-- :: root pts/ -- : (192.168.53.2) salt '*' state.sls init.zabbix_agent
-- :: root pts/ -- : (192.168.53.2) ls
-- :: root pts/ -- : (192.168.53.2) cat zabbix_agent.sls
-- :: root pts/ -- : (192.168.53.2) ls
-- :: root pts/ -- : (192.168.53.2) vi SysIni.sls
-- :: root pts/ -- : (192.168.53.2) salt '*' state.sls init.SysIni
-- :: root pts/ -- : (192.168.53.2) salt 'testvm02' grains.items
-- :: root pts/ -- : (192.168.53.2) init
-- :: root pts/ -- : (192.168.53.2) history
-- :: root pts/ -- : (192.168.53.2) history | more
-- :: root pts/ -- : (192.168.53.2) export HISTTIMEFORMAT="%F %T "
-- :: root pts/ -- : (192.168.53.2) history | more
-- :: root pts/ -- : (192.168.53.2) history
-- :: root pts/ -- : (192.168.53.2) history | more
-- :: root pts/ -- : (192.168.53.2) history
-- :: root pts/ -- : (192.168.53.2) export HISTTIMEFORMAT="%F %T `who am i` "
-- :: root pts/ -- : (192.168.53.2) history

4.可以将这个变量加入到/etc/profile全局变量设置中,就对所有的会话都生效了

[root@testvm01 ~]# tail /etc/profile
else
. "$i" >/dev/null >&
fi
fi
done unset i
unset -f pathmunge export HISTTIMEFORMAT="%F %T `who am i` "
[root@testvm01 ~]# source /etc/profile

备注:这样的话,对于后续登录的会话都是生效的。

疑问:在这里我就有个疑问了,为啥时间格式是%F %T呢,也找了半天,后来在bing上搜索了一个贴,里面提到,HISTTIMEFORMAT使用的是strftime函数的时间格式。

strftime函数的手册

http://man7.org/linux/man-pages/man3/strftime.3.html

里面提到

 %F     Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)
%T The time in 24-hour notation (%H:%M:%S). (SU)

所以,就是需要的时间格式,自己也可以根据具体的情况,选择,是有AM/PM这种的,还是其他的方式,都可以,来源找到了,自然知道如何去配置。

文档创建时间:2019年3月13日14:53:50

linux中,history命令,显示时间戳?操作人?IP地址?的更多相关文章

  1. linux下history命令显示历史指令记录的使用方法

    Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...

  2. linux中history命令使用与配置

    history中设置显示命令的执行时间 vi /root/.bashrc HISTTIMEFORMAT="%Y-%M-%D %H:%M:%S" export HISTTIMEFOR ...

  3. Linux设置history命令显示行数以及时间

    Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录但是,这个记录并不包含时间项目因此只能看到命令,但是不知道什么时间执行的如何让history记录时间呢? 解决方案 注意 ...

  4. linux下history命令显示执行时间

    想在输入history命令之后,显示自己历史的命令执行的时间,需要在用户目录下~/.bashrc的文件末尾追加添加如下几行 之前一直想看一下自己历史命令执行的时间,找了很多教程都没有卵用,最终参考了如 ...

  5. Linux设置history命令显示时间

    效果如图: 设置方法如下: vim /etc/bashrc #command-->history set HISTFILESIZE=2000 #保存命令的总数默认总数为1000 HISTSIZE ...

  6. linux中history加入显示时间命令代码

    source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...

  7. linux中date命令显示昨天的日期信息?以特定格式显示时间?

    需求描述: linux环境中,在使用date命令的时候,可以通过-d指定日期的字符串来显示日期 操作过程: 1.通过date显示昨天的日期 [root@redhat6 ~]# date -d 'yes ...

  8. Linux 配置 history 命令显示操作时间、用户和登录 IP

    一.在配置文件中(/etc/bashrc 或者 /etc/profile 或者~/.bash_profile 或者 ~/.bashrc)添加如下配置 #vim /etc/bashrc    // 进到 ...

  9. linux 中 ll 命令显示 的大小 是什么单位的啊?

    ll显示的是字节,可以使用-h参数来提高文件大小的可读性,另外ll不是命令,是ls -l的别名 ls -al   是以字节单位显示文件或者文件夹大小: 字节b,千字节kb, 1G=1024M=1024 ...

  10. linux中日历命令显示

    cal 显示当前月的日历 cal 年份 显示特定一年的年历 [jasmine.qian@]$ cal January 2019 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 ...

随机推荐

  1. Android 蓝牙4.0 BLE (onServicesDiscovered 返回 status 是 129,133时)

    Android ble (Bluetooth Low Energy) 蓝牙4.0,也就是说android 4.3+, API level >= 18,且支持蓝牙4.0的手机才可以使用. BLE是 ...

  2. Java基础知识--集合

    集合类 数组和集合的比较:数组可以存储对象,也可以存储基本数据类型,但是缺点就是长度固定,不能改变:集合长度是可变的,但是集合只能存储对象,集合可以存储不同类型的对象. Java容器类库一共有两种主要 ...

  3. mysql连接查询(A表某字段 like B表字段)

    假设有A.B两表 A表中有个字段column_aa B表中有个字段column_bb 如果需要查询出B表中字段column_bb like A表中column_aa字段的纪录,可以使用如下语句 sel ...

  4. cookie实现用户登录验证

    cookie实现用户登录验证 1, INSTALLED_APPS中注册app03 2,在主程序中新建映射关系到app3的url中 from django.conf.urls import url,in ...

  5. ios程序中存储的回忆

    可编程序中的存储区域基本上分为:静态存储区,栈区,堆区,代码区. 1.静态存储区(全局存储区):该块内存在程序编译期间就已经分配好,并且在程序运行期间都一直存在,主要用于存储静态数据,全局数据和常量. ...

  6. javaScript系列 [02]-javaScript对象探析

    [02]-javaScript对象探析 题记:多年前,以非常偶然的方式关注了微信公众号“面向对象”,本以为这个公众号主要以分享面向对象编程的干货为主,不料其乃实实在在的猿圈相亲平台.通过查看公开资料, ...

  7. Mac NPM 配置

    1.NPM 简介 NPM(node package manager),通常称为 node 包管理器,是目前世界上最大的开源库生态系统.使用 NPM 可以对 node 包进行安装.卸载.更新.查看.搜索 ...

  8. 飞思卡尔单片机P&E开发工具硬件及软件

    原文链接: http://blog.sina.com.cn/s/blog_8ebff8d7010121tm.html 1.HC(S)08系列 开发机硬件:USB-ML-12 CYCLONE PRO U ...

  9. Unity应用架构设计(1)—— MVVM 模式的设计和实施(Part 2)

    MVVM回顾 经过上一篇文章的介绍,相信你对MVVM的设计思想有所了解.MVVM的核心思想就是解耦,View与ViewModel应该感受不到彼此的存在. View只关心怎样渲染,而ViewModel只 ...

  10. mysql中实现字符串分割sp_split

      sp_split : DELIMITER $$ CREATE DEFINER = 'test_user'@'%' PROCEDURE sp_split (IN p_str varchar(2000 ...