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 ...
随机推荐
- IDEA2019.2.1中文乱码解决
写在前面 太晚了, 长话短说, idea更新到2019.2.1, 项目任何地方输入中文都是乱码, 修改编码UTF-8依然如此.参考https://blog.csdn.net/chenjk10/arti ...
- oracle 19c jdbc之Reactive Streams Ingestion (RSI) Library
19c jdbc新特性 https://blogs.oracle.com/dev2dev/whats-new-in-193-and-183-jdbc-and-ucp jdbc实现直接路径加载 http ...
- SQLServer replace函数
declare @name char(1000) --注意:char(10)为10位,要是位数小了会让数据出错 set @name='ssssfcfgghdghdfcccs' select repla ...
- Java12新特性 -- 只保留一个 AArch64 实现
现状 当前 Java 11 及之前版本JDK中存在两个64位ARM端口.这些文件的主要来源位于src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录 ...
- 【Java】Spring之面向方面编程(AOP)(五)
面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP).OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面.方面实现了跨越多种类型和对象的关注点(例如事务管理)的 ...
- matlab学习笔记8 基本绘图命令-LineSpec线条设定
一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...
- [LeetCode] 212. Word Search II 词语搜索 II
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...
- [LeetCode] 236. Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- django:下拉框二级联动实现
注意:只列举核心部分代码 前台模板: 第一级下拉菜单: <div class="col-sm-4"> <select data-placeholder=" ...
- 【视频开发】GPU编解码:GPU硬解码---DXVA
GPU编解码:GPU硬解码---DXVA 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解码可分四级:VLD,控制BitStream;IDCT,反 ...