Bash 스크립트를 원합니다:
- 현재 디렉터리의 모든 파일에 대해 "strings" 명령을 실행합니다.
- grep을 사용하여 각 파일의 문자열 출력에서 특정 용어를 검색하십시오.
다음이 있지만 스크립트 출력에 일치하는 항목이 표시되지 않습니다.
#!/bin/bash
echo "Searching files in directory for secrets and urls"
for file in ./*
do
echo "=====$file====="
strings ${file} | egrep -wi --color 'secret\|password\|key\|credential|\http'
done
나도 그것을 시도했지만 strings $file | egrep -wi --color 'secret\|password\|key\|credential|\http'
작동 eval "strings ${file} | egrep -wi --color 'secret\|password\|key\|credential|\http'"
하지 않는 것 같습니다. 스크립트는 파일 이름을 출력하지만 일치하는 항목은 출력하지 않습니다.
답변1
을 사용하는 egrep
것과 동일합니다 grep -E
. 즉, 확장 정규식을 사용할 수 있습니다.
확장 정규식에서는 |
대체 항목(사용하려는 항목)이며 \|
리터럴 |
문자와 일치합니다.
그러므로 당신은 원한다
grep -w -i -E 'secret|password|key|credential|http'
또는
grep -i -E '\<(secret|password|key|credential|http)\>'
where \<
및 \>
단어 경계와 일치합니다.
또는
grep -w -i -F \
-e secret \
-e password \
-e key \
-e credential \
-e http
...정규식 일치 대신 문자열 비교를 수행하려는 경우.
또한 변수 확장에는 항상 큰따옴표를 사용하는 것이 좋습니다. 또한 이름에 공백 문자(공백, 탭, 줄 바꿈)가 포함된 파일과 파일 이름 와일드카드( *
, , )가 포함된 ?
파일 을 올바르게 처리할 수 있습니다.[...]
#!/bin/sh
for name in ./*; do
[ ! -f "$name" ] && continue # skip non-regular files
printf '==== %s ====\n' "$name"
strings "$name" | grep ...
done
당신은 또한 볼 수 있습니다
답변2
루프는 for
불필요합니다. 파일 이름과 소수점 오프셋을 출력하는 데 사용되며 strings
, 최소 3자 길이의 문자열을 다음으로 파이프합니다 egrep
.
strings -n 3 -f -t d ./* 2> /dev/null |
egrep '[[:alnum:][:punct:]]*(secret|password|key|credential|http)'\
'[[:alnum:][:punct:]]*$'
누락을 방지하려면 기본 4자가 아닌 3자가 필요합니다."열쇠".
샘플 입력 파일이 없기 때문에 다음은 디렉터리의 처음 10개 히트를 보여주는 데모입니다 /bin/
.
strings -n 3 -f -t d /bin/* 2> /dev/null |
egrep '[[:alnum:][:punct:]]*(secret|password|key|credential|http)'\
'[[:alnum:][:punct:]]*$' |
head
내 시스템의 출력:
/bin/bash: 78590 rl_discard_keymap
/bin/bash: 78720 rl_executing_key
/bin/bash: 79076 rl_bind_key
/bin/bash: 79847 emacs_standard_keymap
/bin/bash: 79905 _rl_keymap
/bin/bash: 81110 _rl_executing_keyseq_size
/bin/bash: 81598 rl_bind_keyseq_if_unbound
/bin/bash: 81640 rl_bind_keyseq
/bin/bash: 81736 bind_keyseq_to_unix_command
/bin/bash: 81863 _rl_dispatching_keymap