我的网站感染了病毒。该病毒在我的站点的几个文件中添加了此行。我的想法是从终端使用唯一的命令删除此行文本。
假设我有文件夹“ my-folder”,并且在其中有我的文件:“ file-1.php”,“ file-2.php”等。
而且,假设有几个文件被感染。
是否有命令一次可以在多个文件中查找和删除此行代码?
要删除的文本:extract($ _ REQUEST)&& @assert(stripslashes($ accept))&& exit;
我发现了这一点,但仅适用于单个文件:
$ sed 's/extract($_REQUEST) && @assert(stripslashes($accept)) && exit;//' my-file.php
我可以这样做吗?
您可以结合sed
使用find
使其递归。像这样的东西:
find . -type f -name "*php" -exec sed -i.bak 's/extract($_REQUEST) && @assert(stripslashes($accept)) && exit;//' {} \+
请注意,它将遍历当前目录树并将sed应用于每个现有的“ * php”文件。它还将为每个更改的文件创建.bak备份文件(以便以后以防万一,可以将其还原)。如果您不需要备份,-i.bak
只需将替换为-i
。否则,您可以稍后使用删除备份(一旦确认一切正常)find . -name "*php.bak" -delete
。
此步骤无法立即解决所有问题,但肯定可以节省将来的时间:将目录下的脚本保存在下面git
(理想情况下,它应该是完整的CI / CD解决方案,但您可以从git开始),因此您可以轻松地回滚/转发应用于文件的更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句