我定期为客户清理被黑的 Wordpress 安装,并且我编写了一组脚本来帮助我追踪网站被黑的位置。我经常使用的一个代码片段在 Ubuntu 上运行良好,但自从周五切换到 Fedora 后,它的表现完全符合预期。命令是这样的:
grep -Iri --exclude "*.js" "eval\s*(" * | grep -rivf ~/safeevals.txt >../foundevals.txt;
它应该发生的事情(并且在我使用 Ubuntu 时确实发生了): grep 遍历所有非二进制文件,不包括 Javascript 包括,对于 eval() 函数的所有出现,然后逐行执行否定匹配针对所有已知的 eval() 函数在 Wordpress 的香草安装中的出现(其模式在 ~/safeevals.txt 中)。
实际发生的情况:第一部分工作正常,因为我单独运行它,它确实在安装中找到了 eval() 的所有实例。但是,不是通过这些结果进行搜索,而是在管道之后重新搜索所有文件,返回 ~/safeevals.txt 的否定匹配(即安装中每个文件的几乎每一行)。
知道为什么第二个 grep 不对管道数据起作用,或者我需要做什么来修复它?谢谢。
-迈克尔