linux中,history命令,显示时间戳?操作人?IP地址?
2023-09-11 14:14:16 时间
需求描述:
在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 5 2019-03-13 14:41:55 vi nmon16e_x86_rhel65 6 2019-03-13 14:41:55 cdd /opt 7 2019-03-13 14:41:55 ls 8 2019-03-13 14:41:55 cd /opt 9 2019-03-13 14:41:55 ls 10 2019-03-13 14:41:55 cd softwares/ 11 2019-03-13 14:41:55 ls 12 2019-03-13 14:41:55 cd ../app/ 13 2019-03-13 14:41:55 ls 14 2019-03-13 14:41:55 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 20 990 2019-03-12 21:14:35 root pts/2 2019-03-13 14:41 (192.168.53.2) vi zabbix_agent.sls 991 2019-03-12 21:16:08 root pts/2 2019-03-13 14:41 (192.168.53.2) salt '*' state.sls init.zabbix_agent 992 2019-03-12 21:16:33 root pts/2 2019-03-13 14:41 (192.168.53.2) vi zabbix_agent.sls 993 2019-03-12 21:18:50 root pts/2 2019-03-13 14:41 (192.168.53.2) salt '*' state.sls init.zabbix_agent 994 2019-03-12 21:21:00 root pts/2 2019-03-13 14:41 (192.168.53.2) ls 995 2019-03-12 21:21:03 root pts/2 2019-03-13 14:41 (192.168.53.2) cat zabbix_agent.sls 996 2019-03-12 21:30:02 root pts/2 2019-03-13 14:41 (192.168.53.2) ls 997 2019-03-12 21:30:07 root pts/2 2019-03-13 14:41 (192.168.53.2) vi SysIni.sls 998 2019-03-12 21:33:38 root pts/2 2019-03-13 14:41 (192.168.53.2) salt '*' state.sls init.SysIni 999 2019-03-12 21:47:48 root pts/2 2019-03-13 14:41 (192.168.53.2) salt 'testvm02' grains.items 1000 2019-03-13 03:51:43 root pts/2 2019-03-13 14:41 (192.168.53.2) init 0 1001 2019-03-13 14:42:00 root pts/2 2019-03-13 14:41 (192.168.53.2) history 1002 2019-03-13 14:42:03 root pts/2 2019-03-13 14:41 (192.168.53.2) history | more 1003 2019-03-13 14:43:30 root pts/2 2019-03-13 14:41 (192.168.53.2) export HISTTIMEFORMAT="%F %T " 1004 2019-03-13 14:43:32 root pts/2 2019-03-13 14:41 (192.168.53.2) history | more 1005 2019-03-13 14:45:20 root pts/2 2019-03-13 14:41 (192.168.53.2) history 1006 2019-03-13 14:45:41 root pts/2 2019-03-13 14:41 (192.168.53.2) history | more 1007 2019-03-13 14:45:45 root pts/2 2019-03-13 14:41 (192.168.53.2) history 20 1008 2019-03-13 14:46:59 root pts/2 2019-03-13 14:41 (192.168.53.2) export HISTTIMEFORMAT="%F %T `who am i` " 1009 2019-03-13 14:47:02 root pts/2 2019-03-13 14:41 (192.168.53.2) history 20
4.可以将这个变量加入到/etc/profile全局变量设置中,就对所有的会话都生效了
[root@testvm01 ~]# tail /etc/profile else . "$i" >/dev/null 2>&1 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命令总结
- 【刷题】面筋-Linux-创建多级目录命令mkdir -p
- 重新点亮linux 命令树————查看进程[二十一]
- How to use udev for Oracle ASM in Oracle Linux 6 怎样使用udev在linux 6系统上使用asm
- 项目部署、配置、查错常用到的Linux命令
- linux中一些常用的命令总结
- Linux系统调优详解(二)——CPU负载查看相关命令
- golang执行Linux shell命令完整场景下的使用方法
- Linux 0.11-用键盘输入一条命令-42
- Computer:Linux系统简介(Linux的基本思想、特点、各版本详解、系统功能、与Windows比较)、常见操作(Shell命令、常用的快捷键)之详细攻略
- Linux从零开始(二、基础命令)
- 【华为云技术分享】Linux内核源码结构(1)
- Linux linux echo命令的-n、-e两个参数
- L79.linux命令每日一练 -- 第11章 Linux系统管理命令 -- sar和chkconfig
- L77.linux命令每日一练 -- 第11章 Linux系统管理命令 -- vmstat和mpstat
- L75.linux命令每日一练 -- 第11章 Linux系统管理命令 -- lsof和uptime
- L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe
- L46.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- w和who
- L43.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- chage和chpasswd
- L35.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- which和whereis
- L3.linux命令每日一练 -- 第一章 Linux命令行简介
- Linux基础命令-kill向进程发送信号
- linux下常用压缩命令 tar压缩Linux解压 压缩Linux压缩Ubuntu压缩centos压缩解压gz txt.gz
- Linux目录结构和常用命令大全(文件处理命令)
- Linux常用文件管理命令