Команда find

Июль 27, 2014

Случилась беда и на сайт залили шелл в js скрипты. Нужно было быстро избавиться от него на сайте. Первым делом полез в бэкапы и увидел, что шелл присутствует даже в самых старых скриптах. Значит предстояло  исправить около 10000 js файлов. При анализе нескольких файлов, выяснил что нужно из каждого js файла удалить строку, включающую в себя определенное слово или подстроку. 

find /dir -mount -exec grep -li "substing" {} \; > /dir/result.txt

Ищет в директории /dir и во всех поддиректориях файл, содержащий строку substing (можно с пробелами, внимательнее относитесь к кавычкам, могут быть проблемы), список файлов сохраняет в /dir/result.txt. Я таким образом оценивал масштабы беды, ну и проверял есть ли результат.

find /dir -mount -exec grep -li "substing" {} \; | while read f; do cat "$f" | grep -v "substing" > /tmp-dir/tmp.file; mv /tmp-dir/tmp.file "$f"; chown apache:apache "$f"; done

Ищет в директории /dir и во всех поддиректориях файл, содержащий строку substing (можно с пробелами, внимательнее относитесь к кавычкам, могут быть проблемы), при этом удаляет строку в которой есть substing и меняет владельца я указал apache, ну это вам виднее будет, на какие нужно поменять. Если убрать «chown apache:apache „$f“;», то владельцем файла будет тот пользователь, от которого запустили команду.

find /dir -type d -exec find {} -mtime -1 -name "*.php" \;

Тут все просто: вывод всех файлов php из директории dir и ее поддиректорий, имевших изменения за последние 24 часа.

Нет комментариев

В этой теме по нет комментариев

Leave a Comment:

Your email address will not be published.*