本次实战目标为日志脱敏,将日志目录内的所有文件进行处理,凡是涉及到卡号和密码的信息,一律以“*”号替代,要替代的内容都从对应的标签内获取,本脚本执行目录

drwxr-xr-x 5 root root 4096 May 31 20:20 log
-rw-r--r-- 1 root root 57 May 31 20:20 cfg.log
-rw-r--r-- 1 root root 3 May 31 20:28 cfg.time
-rwxr-xr-x 1 root root 1625 May 31 20:30 desi.sh
-rw-r--r-- 1 root root 856 May 31 20:50 sh.log
使用说明
本脚本使用说明:
1.文件夹log为待处理的日志目录,作为例子
2.cfg.log用来配置待处理的日志目录
3.cfg.time为定时任务的间隔时间,单位为分钟
4.sh.log为脚本执行留下的日志
5.desi.sh为处理日志脱敏的脚本
6.在desi.sh前几行是各配置文件路径,需要手动配置,注意必须是绝对路径 PS:
经测试,处理80M的日志大概需要30s+时间,所以最好把时间间隔设置的尽量长一些,另外,本脚本并未对处理过的日志做任何记忆,也就是说,每次执行脚本的时候,都会对日志目录内的日志进行处理,所以随着时间的推移,日志越来越大,脚本执行的时间也会越长,这一点需要注意。如果必要,后期可优化。

desi.sh内容

# This file is used to handle log desensitization
# kay
# 05/31/2016 #!/bin/bash - # global path variable
timecfg="/root/shell/cfg.time"
path="/root/shell/desi.sh"
shlogpath="/root/shell/sh.log"
logcfg="/root/shell/cfg.log" # add crontab
docrontab()
{
cronfile="/tmp/crontab.${USER}"
crontab -l > ${cronfile}
interval=`cat ${timecfg}`
content="*/"${interval}" * * * * "${path}
grep -q "${path}" ${cronfile} && echo "" ||
{
echo "${content}" >> ${cronfile}
crontab ${cronfile}
}
rm -rf ${cronfile}
} # desensitization function
keylab=(track_2 track_3 pan exp_dt ic_dat pin_key track_key trm_key tpklmk zaklmk zpklmk pin_data)
desensitization(){
for key in ${keylab[*]}
do
f1="<"${key}">"
f2="s/<"${key}">/\n"${key}"=/gp"
f3="s/<\/"${key}">/\n/gp"
f4="/"${key}"=/p"
f5="s/"${key}"=//gp"
f6=":1;N;s/^(\S+)((\n.*)*)\n\1$/\1\2/M;$!b1" list=`grep -r ${f1} $1 | sed -n ${f2} | sed -n ${f3} | sed -n ${f4} | sed -n ${f5} | sed -r ${f6} | cat` for l in ${list}
do
cnb=""
len=${#l}
if [ ${len} -gt 8 ]
then
cnb="5-"$((${len} - 4))
else
cnb="2-3"
fi
mid=`echo ${l} | cut -nb ${cnb}`
mid=`echo "${mid}" | sed 's/*/\\\*/g'`
h=`echo ${l} | sed 's/'${mid}'/*******/g'`
f=`echo "${l}" | sed 's/*/\\\*/g'`
grep -rl ${f} $1 | xargs sed -i 's/'${f}'/'${h}'/g'
done
done
} # check whether config file exists
if test -f ${logcfg}
then
echo "${logcfg}..." >> ${shlogpath}
else
echo "log config file not exist" >> ${shlogpath}
fi # read config file and handle every file and directiory
filelist=`cat ${logcfg}`
for f in ${filelist}
do
desensitization ${f}
done docrontab exit

讲解先不写了,手都麻了

希望下次看到还能看明白。。

shell实战之日志脱敏的更多相关文章

  1. shell实战之日志脱敏-2.0

    cfg # This is generated to be a configuration file. # kay # // # This is a parameter for crontab and ...

  2. shell实战之日志备份

    util.sh #!/bin/bash - # Read config # kay # Version: 1.0 # // # configuration file path config=${log ...

  3. 用shell统计访问日志里每个ip访问次数【转】

    今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现.   访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...

  4. log4j 日志脱敏处理 + java properties文件加载

    Java 加载Properties 配置文件: ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter"); ...

  5. java 日志脱敏框架 sensitive-v0.0.4 系统内置常见注解,支持自定义注解

    项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 特性 基于注解的日志脱敏. 可 ...

  6. java 日志脱敏框架 sensitive-新版本0.0.2-深度拷贝,属性为对象和集合的支持

    项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 用户也可以基于自己的实际需要, ...

  7. java 日志脱敏框架 sensitive,优雅的打印脱敏日志

    问题 为了保证用户的信息安全,敏感信息需要脱敏. 项目开发过程中,每次处理敏感信息的日志问题感觉很麻烦,大部分都是用工具类单独处理,不利于以后统一管理,很不优雅. 于是,就写了一个基于 java 注解 ...

  8. Shell + crontab 实现日志压缩归档

    Shell + crontab 实现日志压缩归档 crontab # archive the ats log days. */ * * * * root /bin/>& shell #! ...

  9. 如何将shell的打印日志输入到日志文件

    如果shell打印的日志很多,屏幕无法完全显示,需要查看shell执行的情况,这是就需要输入到日值了: 如:echo "2012-6-14" | tee -a my.log -a表 ...

随机推荐

  1. C#从SqlServer数据库读写文件源码

    如下的资料是关于C#从SqlServer数据库读写文件的内容,希望能对码农们有一些用. <%@ Page Language="C#" %> <script run ...

  2. MongoDB数据库的设计规范

    MongoDB是非关系型数据库的典型代表,DB-Engines Ranking 数据显示,近年来,MongoDB在NoSQL领域一直独占鳌头.MongoDB是为快速开发互联网应用 而设计的数据库系统, ...

  3. 单台MongoDB实例开启Oplog

    背景 随着数据的积累,MongoDB中的数据量越来越大,数据分析团队从数据库中抽取变化数据(假如依据栏位createdatetime,transdatetime),越来越困难.我们知道MongoDB的 ...

  4. MySQL慢查询日志释疑总结

      之前写了一篇"MySQL慢查询日志总结",总结了一些MySQL慢查询日志常用的相关知识,这里总结一下在工作当中遇到关于MySQL慢查询日志的相关细节问题,有些是释疑或自己有疑惑 ...

  5. c#高级编程_第10版 云盘地址

    下载地址 链接:https://pan.baidu.com/s/1u8PcY4RJhRB1yfm-2XaTEQ 密码:159z

  6. Python爬虫之Selenium库的基本使用

    Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fire ...

  7. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议

    ueditor富文本编辑器默认支持百度地图组件,但是如果导入动态地图后会加很多默认的地图组件在上面.如果需要自定义动态地图的组件则需要修改ueditor特定的html. ueditor百度地图组件所在 ...

  8. 一篇文章教你如何用 Python 记录日志

    前言: 这篇文章是我copy别人的,但是个人认为讲的真的很细致,有原理有实例,不仅仅只教你如何使用日志更会叫你知道日志的原理,真的非常棒,虽然文章很长,也许你不会认认真真读完, 但是当你遇到问题时这篇 ...

  9. Django REST framework基础:视图和路由

    DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Dj ...

  10. Git 生成SSH Key

    背景:服务器是LINUX系统(centos7),使用GitLab管理git代码库.各个客户端通过sourcetree 工具,采用SSH获取.提交代码.使用SSH的方式需要公钥和私钥.下面介绍秘钥的生成 ...