Centos7:使用history中显示命令执行的时间及IP

简介: 使用history中显示命令执行的时间及IP

     在centos中可以用history命令查看某个用户过的命令,比如在root用户执行history命令,可以看到下面的结果:

[root@dbserver ~]# history|head -31  ip add
2ping www.sina.com.cn
3cd /etc/system-config

     在默认的情况下,只能看到执行的命令,如果能看到命令执行的时间及IP地址,有时会对我们排查故障、诊断问题有很大的帮助,也可以用于操作审计。

1 history显示命令执行时间

     bash可以通过设置环境变量HISTTIMEFORMAT可以控制history命令的显示方式,要使这个变量对所有的用户生效,可以将变量的设置放在/etc/bashrc文件下。

编辑/etc/bashrc文件,加入下面的内容:

exportHISTTIMEFORMAT="%F  %T "

%T显示时间,同%F一起使用显示时间的全格式,如果只使用%T则显示的时间不包括日期,运行一下脚本文件使其生效后,在运行history命令,输出有了命令运行的时间:

[root@dbserver ~]# source /etc/bashrc[root@dbserver ~]# history |head -212023-03-0913:47:16 ip add
22023-03-0913:47:16 ping www.sina.com.cn

2 在命令历史文件名中嵌入ip信息

      要使history记录命令执行的ip则比想象的要复杂,常见的在HISTTIMEFORMAT环境变量中嵌入who命令来获取ip,实际显示的是运行history命令的会话的ip地址,不是历史记录中的命令的实际执行者的ip。要想获得命令的执行者的ip,有一个办法是设置HISTFILE环境变量,将IP作为命令历史文件的一部分。除了用who命令获得ip信息外,现在大部分系统都是使用ssh远程连接,环境变量SSH_CLIENT里面含有IP地址信息,把这个里面的ip地址取出来也可以,方法如下:

arr=($SSH_CLIENT)
ssh_ip=${arr[0]}export ssh_ip
[root@dbserver ~]# echo $ssh_ip192.168.56.1

     SSH_CLIENT是以空格分隔的字符串,将它数组化后,取得数组的第一个元素就是ip地址,有了IP地址,将它作为命令历史文件名称的一部分设置HISTFILE环境变量

exportHISTFILE=$ssh_ip$RANDOM".history"

     加入$RANDOM变量的目的是防止一个ip多次使用一个用户账号登录,覆盖掉以前的文件。

这时后运行几个命令退出会话再重新登录后就可以看到命令的历史记录文件了

[root@dbserver ~]# ls -l
total 2883740
-rw-------.  1 root   root            112 Mar  9 16:45 192.168.56.17946.hisroty

/etc/bashrc中ip地址记录相关的部分如下:

arr=($SSH_CLIENT)
ssh_ip=${arr[0]}
export ssh_ip
export HISTFILE=$ssh_ip$RANDOM".history"
相关文章
|
29天前
|
Linux 网络安全
Centos 防火墙端口控制命令
Centos 防火墙端口控制命令
32 3
|
2月前
|
Linux
CentOS 安装rz和sz命令
CentOS 安装rz和sz命令
20 0
|
2月前
|
Linux
Centos7使用man查找命令时,报错No manual entry for xxxx
Centos7使用man查找命令时,报错No manual entry for xxxx
10 0
|
3月前
|
Linux 数据安全/隐私保护
CentOS设置IP地址的方法
CentOS设置IP地址的方法
525 0
|
1天前
|
Linux Shell 数据安全/隐私保护
centos常见的命令
CentOS 是一个基于 Red Hat Enterprise Linux (RHEL) 的免费企业级操作系统。以下是一些基本的 CentOS 命令,用于日常管理和操作:
|
4天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
|
7天前
|
Linux
CentOS 系统常用命令详解
本文介绍了CentOS中11个常用的命令,包括`ls`(列出文件和目录)、`cd`(切换目录)、`pwd`(显示当前目录)、`mkdir`(创建目录)、`rm`(删除文件/目录)、`cp`(复制文件/目录)、`mv`(移动/重命名文件)、`cat`(查看文件内容)、`grep`(搜索文件内容)和`top`(显示系统进程信息)以及`yum`(包管理器)。学习这些命令能提升系统管理和操作效率。
15 0
|
8天前
|
网络协议 Linux
Centos7 nfs常用命令详解
`/etc/exports`是NFS服务的配置文件,定义了共享给客户端的文件系统和访问规则。共享目录、客户端IP或域名、以及访问权限和用户映射选项是其主要内容。客户端指定方式包括IP地址、子网、域名或通配符。选项包括读写权限(ro/rw)、用户映射(如root_squash/no_root_squash/all_squash)和其他设置(sync/async/secure/insecure等)。`exportfs -r`用于重新应用配置。配置示例:`/opt/test`共享给192.168.1.0/24,权限为rw,同步写入(sync)。注意,不建议开启no_root_squash以确保安全。
11 0
|
9天前
|
网络协议 Linux 网络安全
Linux(17)Centos5、6、7、8版本的防火墙常用命令
Linux(17)Centos5、6、7、8版本的防火墙常用命令
13 0
|
11天前
|
运维 安全 Linux
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问

热门文章

最新文章