我们需要一个 shell 脚本来查找并替换 /home 文件夹内所有 index.php 文件中的一段注入代码
答案1
你可以用 sed 来做。下面是很好的教程它可能很简单find /home/user -iname index.php -exec sed -i s/<piece of code to find/<replace with that>/ {} \;
我建议你在执行此操作之前先备份,然后运行一些测试以查看它是否正常工作。请记住,/ / 之间的内容是正则表达式,根据其格式,你可能会匹配更多你需要的内容。正如我所说,在你的“实时”文件上运行此操作之前先进行测试。
编辑:修复了 find 命令,感谢 rems
答案2
for file in $(find /home/user -iname index.php)
do
echo "replacing in file $file ..."
sed -i 's/<piece of code to find>/<replace with that>/g' $file
done
如果你想测试您可以先将其放在临时文件中,检查其是否正确,然后覆盖原始文件:
for file in $(find /home/user -iname index.php)
do
echo "reading from $file, writing to $file.tmp ..."
sed 's/<piece of code to find>/<replace with that>/g' $file > $file.tmp
done
现在检查一些文件并检查替换是否正确完成。如果一切正常,则使用以下命令将新的 index.php.tmp 文件重命名为 index.php
for file in $(find /home/user -iname index.php.tmp)
do
echo "moving $file.tmp to $file ..."
mv $file.tmp $file
done
如果要替换的代码中有斜杠(“/”),那么您可以在 sed 替换命令中使用另一个分隔符:'s# 要查找的代码片段# 用这个 #g 替换'