Bash : 자동으로 실행되지 않은 액세스 시도에 사용된 모든 IP 주소를 찾습니다.

Bash : 자동으로 실행되지 않은 액세스 시도에 사용된 모든 IP 주소를 찾습니다.

Bash에서 가상 머신을 작업 중입니다. auth.log 파일을 사용하여 인증 없이 시스템에 액세스하려는 시도에 사용된 모든 IP 주소를 찾으라는 요청을 받습니다. 내 문제에 대한 답을 찾지 못한 것 같습니다. 예는 다음과 같습니다.여기에 이미지 설명을 입력하세요

반환된 모든 줄은 내 공유 파일 /mnt/analyse/traitement/cueillette.txt에 작성되어야 합니다. 도와주세요 ! 감사해요

답변1

grep을 grep으로 파이프할 필요는 없습니다(이것은 거의 항상 비효율적이고 잘못된 접근 방식을 취하고 있다는 신호입니다. sed이 작업에는 단독으로도 충분합니다. 또는 awk. 또는 perl). 이는 sudo su root cat말도 안되는 소리입니다.

이 시도:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

"인증 실패"와 일치하는 모든 줄에 대해(참고,~ 아니다"진짜fication"), 이 sed스크립트는 줄의 시작부터 (및 포함)까지의 모든 항목 rhost=과 IP 주소 뒤의 모든 항목을 제거한 다음 해당 줄을 인쇄합니다.

확장 정규 표현식에 sed' 옵션을 사용하므로 이스케이프할 필요 없이 작동합니다 .-E()+

sed를 사용하여 명령이 루트로 실행되는 동안 sudo출력 리디렉션은 수행되지 않습니다. 루트가 아닌 원래 셸에서 수행됩니다. 출력 파일에도 쓰기 위해 루트 권한이 필요한 경우 다음과 같이 실행 tee하십시오 sudo.

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

관련 정보