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

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. java新知识系列 五

    类方法和对象方法的使用限制 abstract修饰符的注意 静态变量只能在类主体中定义,不能在方法中定义 线程的各种方法差别 关于抽象类 什么是中间件 Servlet生命周期的三个主要方法 可以修饰类的 ...

  2. [Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

    1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...

  3. 在phpstudy中安装并使用ThinkPHP 5

        最近在慕课网学习 thinkphp,由于教师使用的是 MAC下的 MAMP 环境,而我使用的是 win7 的 phpstudy,区别不大,记录在这里,方便查询.   不同系统集成环境安装: m ...

  4. JIRA笔记(一):安装部署JIRA

    (一)     说明 说明JIRA的安装及破解. 操作系统:WIN 10 数据库:Oracle 12C R2(这个版本的jira,atlassian建议的是 12C R1,不过R2也能用,其他版本不清 ...

  5. activeMQ类别和流程

    Point-to-Point (点对点)消息模式开发流程 :        1.生产者(producer)开发流程: 1.1 创建Connection: 根据url,user和password创建一个 ...

  6. Windows server2008R2 企业内部搭建虚拟专用网络服务

    VPN英文全称是“Virtual Private Network”,就是“虚拟专用网络”.可以远程帮助用户.分公司.商业伙伴及供应商同公司的内部网建立可信的安全连接,用于经济有效地连接到商业伙伴和用户 ...

  7. LeetCode算法题-Heaters(Java实现)

    这是悦乐书的第239次更新,第252篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第106题(顺位题号是475).冬天来了!您在比赛期间的第一份工作是设计一个固定温暖半径 ...

  8. 如何在查看docker container内进程信息,与宿主机上进程信息的映射关系

    docker container内运行的进程,在宿主机上,通过ps也是能够查到的,但是在不熟悉命令的时候,无法快速找到他们的关系. 这里科普一个基础命令 docker top 1. 找到容器的id d ...

  9. [LeetCode] 5. 最长回文子串

    题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你 ...

  10. How to move lobsegment and lobindex to a different Tablespace

    Hi, Assuming that I have table "TEST" in USERS TableSpace CREATE TABLE TEST ( TEST_ID NUMB ...