1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Linux】如何查看命令运行历史时间以及操作人IP

【Linux】如何查看命令运行历史时间以及操作人IP

时间:2021-04-23 10:27:52

相关推荐

【Linux】如何查看命令运行历史时间以及操作人IP

文章目录

说明让我们的history展示执行时间及操作人ip(此ip为当前登录ip)记录日志其他说明

说明

我们在工作中,往往为了省事,多个人用一个linux账户,这样当我们在系统出问题时,无法知道是谁进行了不好的操作,比如误删除或错误的执行了命令,我们可以通过这个方法来查询定位这个“坏家伙”。

让我们的history展示执行时间及操作人ip(此ip为当前登录ip)

编辑/etc/bashrc/etc/profile~/.bashrc~/.bash_profile(主要看下你的~目录下有哪个就编辑哪个,前面两个是全局,后两个针对当前用户)

vi /etc/profile

在文末加上以下内容

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` # 取得登录客户端的IPif [ -z $USER_IP ]thenUSER_IP=`hostname`fiexport HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "

使配置生效(这里具体看你修改文件)

source /etc/profile

测试

我们还可以查询账户登录的ip和登录的时间段

last

记录日志

感谢庭外看茶的反馈,经验证who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'获取的是当前登录人的ip,并没有做历史记录,博主查阅了网上相关的资料,重新整理为日志记录的形式。

编辑

vi /etc/profile

文末加入

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` # 取得登录客户端的IPHISTDIR=/var/log/historyif [ -z $USER_IP ]thenUSER_IP=`hostname`fiexport HISTSIZE=4096DT=`date +%Y%m%d_%H%M%S`export HISTFILE="$HISTDIR/${LOGNAME}_${USER_IP}.$DT"export HISTTIMEFORMAT="%F %T $USER_IP:`whoami` "chmod 666 $HISTDIR/* 2>/dev/null

使配置生效(这里具体看你修改文件)

source /etc/profile

注意:此方法是将日志默认保存~/.bash_history改到指定的日志路径,通过重命名为用户名加ip和时间的形式来记录操作人ip的,日志在登录时保存在内存中,只有退出时和手动执行history -w (覆盖)history -a (追加)才会被记录。

通过修改DT=`date +%Y%m%d`可以实现按天记录,当然我们也可以改成按月、按年记录,由于是修改日志保存位置,当时间与我们的日志文件名不一致时,会导致用户查询不到历史记录,例如我们按照上面DT为date +%Y%m%d_%H%M%S,当用户退出再登录时,我们无法再次匹配到日志文件,这样登录人每次都要自己手输历史命令不方便,我们可以按月或按日记录,或者我们干脆去掉DT,export HISTFILE="$HISTDIR/${LOGNAME}_${USER_IP}",这样每个用户和ip的组合命令都单独记录,但是在时间纬度上就不好确定,具体使用需要你自己取舍,我的建议是如果操作用户ip少的情况就用不带DT的方式,如果用户多,可以确定大概命令出错的时间段,建议加DT设置为时分或者小时的形式。

其他说明

日志文件中的#后面的数字是命令执行的时间戳,我们可以自行转换,确定执行时间。

linux自带的时间戳转化命令

date -d @1657506746 +"%Y-%m-%d %H:%M:%S"

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。