SSH를 사용하여 전체 Ubuntu 컴퓨터의 모든 파일에서 특정 단어를 검색하려면 어떻게 해야 합니까?
노트:SSH 세션을 실행하기 위해 Windows 프로그램 PuTTY를 사용하고 있지만 일단 연결되면 일반 bash 세션이 있습니다.
다음과 같은이 답변UL.SE에서는 다음 bash 명령을 사용했습니다.
find / -xdev -type f -print0 | xargs -0 grep -H "search for this text"
하지만 이 명령은 접근이 거부되거나 일치하는 항목이 없더라도 출력을 반환하며, PuTTY는 볼 수 있는 세션 기록을 제한하기 때문에 모든 결과를 볼 수는 없습니다.
저는 캡처 플래그 챌린지를 수행 중입니다. SSH를 통해 Linux 시스템에 연결해야 하며 전체 시스템의 모든 파일에서 "플래그" 문자열을 검색하고 싶습니다. bash와 그 명령에 대한 나의 지식은 매우 제한적입니다.
답변1
2> /dev/null
오류를 숨기려면 명령에 추가하세요 . 이를 stderr 리디렉션이라고 합니다. 따라서 특정 명령의 경우 다음과 같습니다.
find / -xdev -type f -print0 | xargs -0 grep -H "search for this text" 2> /dev/null
그러나 이것은 매우 깁니다. 당신은 또한 수:
grep -rw "flag"
~에서grep(1)
:
-r, --recursive
Read all files under each directory, recursively,
following symbolic links only if they are on the
command line. Note that if no file operand is given,
grep searches the working directory. This is
equivalent to the -d recurse option.
-w, --word-regexp
Select only those lines containing matches that form
whole words. The test is that the matching substring
must either be at the beginning of the line or preceded
by a non-word constituent character. Similarly, it
must be either at the end of the line or followed by a
non-word constituent character. Word-constituent
characters are letters, digits, and the underscore.
This option has no effect if -x is also specified.
현재 디렉토리의 모든 파일에서 "flag"라는 단어를 찾습니다. 따라서 전체 머신을 검색하려면 에서 이 명령을 실행하세요 /
. 대소문자를 구분하지 않으려면 를 추가하세요 -i
. 이것의 또 다른 장점은 flagged
유사한 단어를 찾을 수 없다는 것입니다.
이 모든 메시지를 grep -rw "flag" 2> /dev/null
필터링 하려면Permission denied