位置: 编程技术 - 正文
推荐整理分享shell如何记录用户的IP与命令详解(shell 记录日志),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:shell查询历史命令,shell 查询,shell 记录日志,shell 记录日志,shell查询历史命令,shell记录脚本执行时间,shell 记录日志,shell记录时间,内容如对您有帮助,希望把文章链接给更多的朋友!
记录输入的命令
history命令可以查看用户输入过的命令,一个典型history命令输出如下:
记录IP
为了记录用户的IP,需要首先获取用户的登录IP。由于在用户登入期间,会话不会断开,所以只需获取一次即可。
获取IP命令: who am i | awk '{print $NF}' | sed -e 's/[()]//g' 。
接着按照 username@ip datetime command 的格式记录用户的命令,这需要设置HISTTIMEFORMAT的值。获取IP和设置命令格式结合起来:
为了让上述命令对所有用户生效,可将其写到/etc/profile文件中。设置完毕后(可能需要重新登录,或者用source命令重新加载/etc/profile),history命令输出如下类似结果:
history命令的内容保存在用户的~/.bash_history文件中,用户可随时更改或者清除。为了统一管理用户的命令记录,我们希望用户执行命令后,执行的命令能输出到某个文件内。达到这个目的需要 PROMPT_COMMAND 环境变量的协助。
设置PROMPT_COMMAND将用户的上一条命令log到syslog里面去:
logger命令将信息输出到/var/log/messages中。任意输入一个命令,然后打开/var/log/messages,会看到已经记录在案。/var/log/messages文件只有root有权限访问,从而达到了记录用户IP和命令的目的。
如果你熟悉syslog,可以将命令记录输出到单独的文件中。这需要在logger命令的-p选项中指定工具名称和等级,例如local2.notice,然后编辑/etc/rsyslog.conf,将local2的信息输出到单独文件: local2.* /var/log/command.log,最后重启rsyslog服务。
通过如上设定,即可在用户无感知的情况下log用户的IP、时间和操作命令。
对用户来说,如何绕过?可以有两种方式:
将命令写到脚本,执行脚本; unset PROMPT_COMMAND变量。参考
详谈Linux写时拷贝技术(copy-on-write)必看篇 COW技术初窥在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了写时复制技术,
Linux 中wget命令详细介绍 两个Linux命令wget和exec一个linux命令:wgetftp访问命令来下载文件的三种方式1)
shell脚本实现多彩进度条 先贴代码#!/bin/bashi=0;str=""arr=("|""/""-""\")while[$i-le]doletindex=i%4letindexcolor=i%8letcolor=+indexcolorprintf"e[0;$color;1m[%-s][%d%%]%cr""$str""$i""${arr[$index]}"sleep0.1leti++
标签: shell 记录日志
本文链接地址:https://www.jiuchutong.com/biancheng/378212.html 转载请保留说明!友情链接: 武汉网站建设