내 Linux 서버에서 일부 악성 코드를 발견하여 많은 PHP 파일에서 이를 제거하려고 합니다.
나는 grep으로 끝없이 노력했습니다 | sed 및 grep | tr이며 간단한 텍스트 문자열도 지울 수 없어 다른 오류가 발생했습니다.
시도할 때:
grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'
다음과 같은 오류 메시지가 나타납니다.
읽을 수 없다파일 이름.php
Mac에서 터미널 사용 - 어쩌면 OSX 구문 문제일까요?
마지막 작업은 모든 파일에서 긴 코드 문자열($,!,?,<,>,\," 기호가 포함된 코드)을 삭제하는 것입니다. 해당 코드를 백슬래시해야 합니까?
답변1
다음과 같이 백업 또는 소스 제어에서 복원해야 합니다.@매트그렇지 않으면 모든 것을 정리했다고 100% 확신할 수 없기 때문에 제안되었습니다.
명령의 문제는 -0
에 대한 플래그 입니다 xargs
. 왜냐하면 이 방식은 xargs
의 출력에서 작동하지 않는 null 종료 인수를 예상하기 때문입니다 grep -l
. -0
파일 이름에 공백이 없는 한 을 삭제하면 작동합니다.
grep -l '@error' * | xargs sed -i 's/error/nothing/g'
답변2
grep -l @error * | xargs sed -i s/error/test/g
작동합니다.