需求描述

在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. JS内存管理

    背景: 分配给Web浏览器的内存通常比分配给电脑桌面的内存少,因为担心运行JS的网页耗尽全部系统内存而导致系统崩溃 内存限制问题不仅影响给变量分配内存,还会影响调用栈以及在一个线程中能够同时执行的语句 ...

  2. Python中将array类型不按科学计数法存在文件中的方法

    直接上代码: from numpy import *import numpy as npDrug_array = zeros((708,708),dtype = int)f = open('D:\ma ...

  3. oracle 存储过程调用方式

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 1 create or replace pro ...

  4. centos找不到环境变量 -bash: ls: command not found

    #在系统中输入命令,报如下错误: [root@a1 work]# ll-bash: ls: command not found #昨时解决办法:export PATH=/usr/local/sbin: ...

  5. Spark2.2出现异常:ERROR SparkUI: Failed to bind SparkUI

    详细错误信息如下: // :: INFO util.log: Logging initialized @5402ms // :: INFO server.Server: jetty-9.3.z-SNA ...

  6. 160多个android开源码汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包含ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  7. SSE图像算法优化系列六:OpenCv关于灰度积分图的SSE代码学习和改进。

    最近一直沉迷于SSE方面的优化,实在找不到想学习的参考资料了,就拿个笔记本放在腿上翻翻OpenCv的源代码,无意中看到了OpenCv中关于积分图的代码,仔细研习了一番,觉得OpenCv对SSE的灵活运 ...

  8. WIN10系统提示无法使用内置管理员账户打开XXX应用程序怎么办

    重装了系统之后,只保留Administrator账户,结果打开程序的时候回弹出这个提示   运行,输入secpol.msc   本地策略-安全选项,启用下面这个,然后重启计算机      

  9. iOS获取当前城市

    1.倒入头文件 #import <CoreLocation/CoreLocation.h> 2.实现定位协议CLLocationManagerDelegate 3.定义定位属性 @prop ...

  10. 【PMP】关键路径法与关键链法

    通俗理解 关键路径法:把项目上的资源都事先全部分到每个活动上. 关键链法:每个活动不打富余,项目经理自己掌握资源,哪个成员执行过程中遇到困难,再给他单独分配资源. PMBOK定义 关键路径法:关键路径 ...