需求描述

在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. 2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...

  2. Django——权限

    在models中为user添加权限,permissions第二个参数可指定权限的别名 创建的各种用户user保存在auth_user表中 创建的各种用户user的对应权限permission_id保存 ...

  3. idea下的new class找不到了

    https://blog.csdn.net/iteye_3381/article/details/82672788

  4. iOS自动布局的学习

    Autolayout: 最重要的两个概念: 约束:对控件位置和大小的限定条件 参照:对控件设置的约束是相对于哪一个视图而言的 自动布局的核心计算公式: obj1.property1 =(obj2.pr ...

  5. PAT Basic 1011

    1011 A+B 和 C (15 分) 给定区间 [−2​31​​,2​31​​] 内的 3 个整数 A.B 和 C,请判断 A+B 是否大于 C. 输入格式: 输入第 1 行给出正整数 T (≤10 ...

  6. HTTP1.1协议-RFC2616-中文版课前资料收集

    1.http rfc大致讲了什么? 2.解决了什么问题? HTTP协议描述的是发送方与接收方的通信协议 协议功能: HTTP协议(HyperText Transfer Protocol,超文本传输协议 ...

  7. 更好用的excel国际化多语言导出

    不知道大家在开发中有没有遇到过『excel导出』的需求,反正我最近写了不少这种功能,刚开始利用poi,一行行的手动塞数据,生成excel,而且还有国际化需求,比如:标题栏有一列,用户切换成" ...

  8. ceph:如何处理rados --striper上传失败的对象

    如何处理使用rados --striper上传失败的对象? `Remove striped objects from a ceph pool without using the striper lib ...

  9. HRMS(人力资源管理系统)-SaaS架构设计-概要设计实践

    一.开篇 前期我们针对架构准备阶段及需求分析这块我们写了2篇内容<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇><HRMS(人 ...

  10. Docker国内镜像source

    现在使用docker的镜像大多基于几种基本Linux系统.虽然我不需要在容器李安装很多东西,但经常需要一些必要的工具,而基础镜像里并不包含,比如vim, ifconfig, curl等.考虑下载速度, ...