AWK에서는 find -print를 사용할 수 없습니다.

AWK에서는 find -print를 사용할 수 없습니다.

RHEL의 기본 명령이 아닌 SUID 시스템 실행 파일을 찾기 위한 명령을 함께 작성하려고 합니다.

이를 위해 로컬 파일 시스템 목록을 가져와(df --local -P) grep으로 파이프하여 헤더를 제거한 다음(grep -v ^Filesystem) awk를 사용하여 열 6을 가져온 다음 검색을 실행했습니다. 해당 폴더에 SUID 시스템 실행 파일이 있는지 확인하세요(awk '{ find $6 -xdev -type f -perm -4000 -print }).

내가 겪고 있는 문제는 find 명령에 -print를 사용할 때 구문 오류가 발생하지만 이를 무시하면 출력이 없다는 것입니다. 무슨 일이 일어나고 있는지, 결함을 해결하는 방법을 실제로 이해하고 있는지 잘 모르겠습니다. 여기가 내가 도움이 필요한 곳이다 :-).

이 작업이 완료되면 다음 단계는 미리 정의된 실행 파일 배열을 가져오고(SUID는 기본적으로 설정되어야 한다는 것을 알고 있습니다) 출력에서 ​​제거하는 것입니다.

df --local -P | grep -v ^Filesystem | awk '{ find $6 -xdev -type f -perm -4000 -print }'
awk: { find $6 -xdev -type f -perm -4000 -print }
awk:                                      ^ syntax error

답변1

findawk함수 가 아닌 실행 파일입니다 . S, awk에서 실행 파일을 호출하려면 이 system()함수를 사용해야 합니다.

cmd | awk '{system("find " $6 " -xdev -type f -perm -4000 -print")}'

관련 정보