Intereting Posts
Строка анализа, содержащая диапазон значений до минимальных и максимальных переменных Как получить строку между последними вложенными `(` и `)`? Imagemagick exec и конвертировать Изменения в php.ini не влияют Объединить второе текстовое поле с введенным текстовым значением в качестве новой строки в существующем созданном изображении Ошибка переопределения PHP с ошибкой при смещении, работает на некоторых серверах, а не на других Использование meteor.js с php-сервером Кодировка UTF-8 с интернет-исследователем% u20AC to & euro; Как создать параметризованный оператор PDO в PHP для динамического запроса? Я не могу подключить свою страницу PHP к моему тестовому серверу SQL и базе данных что является альтернативой password_hash () для (PHP 5 <5.5.0)? Обнаруживать будущие повторяющиеся значения, в то время как итерация через MySQL приводит к PHP Как заменить закодированные в Microsoft котировки в PHP как заставить Doctrine_Expression (доктрина 1.2) попытаться получить последние 7 дней как использовать fgetcsv со строками

Массовое удаление вредоносной строки из php-файлов

Здесь кратко рассмотрено: Удаление строки в файле PHP с помощью Start и End, но я ищу решение для того же кода. Первая строка каждого файла PHP на сервере начинается с <?php if(!isset($GLOBALS[ и заканчивается на -1; ?> в середине – длинная строка кода, которая варьируется от файла к файлу.

Я пытаюсь придумать скрипт, чтобы удалить эту строку из всех файлов. Я бегу в ту же стену, что и парень в предыдущем посте.

С помощью:

 sed -e '1 s/^<\?php if(!isset($GLOBALS\[.*-1; \?>//' *.php 

в среде UNIX печатает файл PHP без кода, но не сохраняет его. Что мне не хватает?

Я написал сценарий для очистки всех файлов во всех каталогах и подкаталогах. Я рекомендую вам резервное копирование 1-го. Это делается изнутри оболочки

Сначала создайте файл с именем fixmacro в своем домашнем каталоге и добавьте к нему следующие 2 строки

 :1/ua=strtolower/s/^.*<?php$/<?php/ :wq 

Далее из каталога, где находятся зараженные файлы, или вы можете запустить его из своего домашнего каталога, выполните следующую команду.

 find . -name *.php -exec vi -s ~/fixmacro {} \; 

Это пойдет на каждый поиск php для зараженных линий и удалит их. Если это не зараженные файлы, он сохраняет файл без изменений /

Используйте параметр sed -i , чтобы sed модифицировал файлы PHP.

 -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied) 

Часть [SUFFIX] является необязательной, но некоторые реализации sed требуют, чтобы вы ее предоставили.

В вашем случае вы можете попробовать следующее:

 sed -i.bak 's/^<\?php if(!isset($GLOBALS\[.*-1; \?>//' *.php 

Читайте man sed для получения дополнительной информации.

Получил это, спасибо за совет по использованию -i. Рабочая команда: sed -i.bak 's/^<\?php if(!isset($GLOBALS\[.*-1; \?>//' *.php