Linux记录history命令
对后面的(1)方法的提取文件改写法(强烈推荐)
简单:https://www.cnblogs.com/andy9468/p/12751809.html
记录存储位置:
mkdir -p /usr/local/records
chmod 777 /usr/local/records/
chmod +t /usr/local/records/
脚本存储位置:
mkdir -p /usr/local/system_script
编写脚本(记录用户执行过的命令):
vim /usr/local/system_script/bash_record.sh
# record cmd history
if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}" export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
说明:history 1 | { read x cmd; echo “$cmd”; }的解释:http://www.mamicode.com/info-detail-2461141.html
使脚本可执行
chmod +x /usr/local/system_script/bash_record.sh
/etc/profile末尾追加内容:
vim /etc/profile
# myscript
# record cmd history
alias su='su -l '
HISTTIMEFORMAT="%F %T "
source /usr/local/system_script/bash_record.sh
说明:
定义su别名,是为了实现切换用户时,强制更新环境变量,避免环境变量未发生改变而引起的,切为低权限用户后,无写文件权限记录history日志。
定义HISTTIMEFORMAT格式,是为了写入history日志时,有命令执行时的时间。将 HISTTIMEFORMAT 变量加入 /etc/profile 文件中,让它对所有用户永久生效。
使配置生效
source /etc/profile
注意:上述脚本只能记录通过sshd服务端口(通常为22) 连接进入主机的用户操作,不能记录通过其他服务(如webmin)端口接入主机的用户操作。
一些说明:
记录脚本
cd /usr/local/
mkdir records
chmod 777 records/
chmod +t records/
vim /etc/profile
说明:
o+t
https://www.iteye.com/blog/cocos-1089890
https://blog.51cto.com/13868278/2149028
(1)脚本一:推荐(按日期分割记录文件)
# record cmd history
if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}" #export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
添加history中每个命令的执行时间:export HISTTIMEFORMAT='%F %T '
https://zhidao.baidu.com/question/1516093640707389740.html
开发版本:计划实现以下功能:
1、日志中记录命令执行所在路径。——已实现
2、避免记录mysql明文密码。——待实现。已实现函数,未实现正确调用。
脚本如下:
# record cmd history # step 1. prepare function
# function about hide password in cmd of mysql
replace_passwd(){
#echo $*
result=$(echo $* | grep "mysql")
if [ -n "$result" ]; then
#echo "yes"
rc=`echo $* |sed 's/-p.*$/-p\*\*\*/g'`
else
#echo "no"
rc=`echo $*`
fi
#echo $rc
return $rc
} # step 2. if it do not exist dir for saving logfile, creating the dir and named username
if [ ! -d /usr/local/records/${LOGNAME} ]
then
mkdir -p /usr/local/records/${LOGNAME}
chmod 300 /usr/local/records/${LOGNAME}
fi # step 3. define few constants
export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}" export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(pwd) #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
(2)脚本二:(测试用,不推荐,日志会不断累积)
if [ ! -d /usr/local/records/${LOGNAME} ]
then
mkdir -p /usr/local/records/${LOGNAME}
chmod 300 /usr/local/records/${LOGNAME}
fi
export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
source /etc/profile
https://my.oschina.net/u/3866149/blog/3030842
=======================================================================
其他:
美化shell:让Linux命令提示符输出完整路径,且有颜色。
shell脚本:实现对登录主机失败10次以上的ip进行拒绝登录
Linux记录history命令的更多相关文章
- linux下history命令显示历史指令记录的使用方法
Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...
- Linux下history命令用法
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...
- Linux下history命令详解---转载
Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[www.linuxidc.com@linux]# history [n][ww ...
- [Linux] 关于 history 命令的简单使用
1. 如果不想记录当前 会话操作的命令的话 可以使用命令 set +o history 但是这个命令有一个坏处, 他自己被记住了... 2. 还有一个办法 就是 在退出登录之前执行命令 history ...
- Linux:history命令详解
Linux下History命令 主要用于显示历史指令记录内容, 下达历史纪录中的指令 . 语法 history [n] history [-c] history [-raw] histfiles ...
- 【转】Linux下history命令用法
转自:http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你 ...
- linux的history命令设置
history的历史记录,同一个用户的各个会话,读取到的内容也是不一样的,原因是它读取的是shell会话缓存里的内容.只有当用户退出当前会话的时候,会话里的缓存内容才会写入~/.bash_histor ...
- Linux设置history命令显示行数以及时间
Linux和unix上都提供了history命令,可以查询以前执行的命令历史记录但是,这个记录并不包含时间项目因此只能看到命令,但是不知道什么时间执行的如何让history记录时间呢? 解决方案 注意 ...
- linux中history命令使用与配置
history中设置显示命令的执行时间 vi /root/.bashrc HISTTIMEFORMAT="%Y-%M-%D %H:%M:%S" export HISTTIMEFOR ...
随机推荐
- Python 开发版本指导与资源
Python 文档:https://docs.python.org/3/ 下载 下载这些文件 文档版本 Python 3.9(开发中) Python 3.8(稳定) Python 3.7(稳定) Py ...
- nmon报告分析
nmon结果说明及分析 2018年09月29日 16:12:10 Jio_2018 阅读数 2334 使用nmon analyser生成的结果文件包含了N多个sheet页,下面只是结合个人经验对几 ...
- openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息 为了实现业务系统针对不同地区IP访问,展示包含不同地区信息的业务交互界面.很多情况下系统需要根据用户访问的IP信息 ...
- python限定方法参数类型、返回值类型、变量类型等
typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...
- window git安装 以及 tortoiseGit安装与使用
一:Git安装 使用TortoiseGit这个程序,需要先安装Git Windows版本Git的下载页面: http://git-scm.com/download/win 1:下载Git到文件夹, 2 ...
- Shenzhen Wanze Technology Co., Ltd.技术支持
本网页为Shenzhen Wanze Technology Co., Ltd.团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:25355100 ...
- [LeetCode] 232. Implement Queue using Stacks 用栈来实现队列
Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...
- [LeetCode] 727. Minimum Window Subsequence 最小窗口子序列
Given strings S and T, find the minimum (contiguous) substring W of S, so that T is a subsequenceof ...
- 【原创】C++11:左值和右值(深度分析)
——原创,引用请附带博客地址 2019-12-06 23:42:18 这篇文章分析的还是不行,先暂时放在这以后再更新. 本篇比较长,需要耐心阅读 以一个实际问题开始分析 class Sub{} Sub ...
- python爬虫3之去哪儿网
学习任务 获取去哪儿网的出发地列表 获取旅游景点列表 获取景点产品列表 存储数据 1 获取出发地站点 (1)访问touch.qunar.com (2)按F12,单击自由行,在自由行页面点击搜索框 (3 ...