Bash: 자동이 아닌 액세스 시도에 사용된 모든 IP 주소 찾기

Bash: 자동이 아닌 액세스 시도에 사용된 모든 IP 주소 찾기

저는 bash에서 가상 머신을 작업하고 있습니다. 인증 없이 컴퓨터에 액세스하려는 모든 IP 주소를 찾으려면 auth.log 파일을 사용하라는 요청을 받았습니다. 내 질문에 대한 답을 찾지 못한 것 같습니다. 예는 다음과 같습니다.여기에 이미지 설명을 입력하세요.

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

답변1

grep을 grep에 연결할 필요는 없습니다. (이는 거의 항상 비효율적이고 잘못된 접근 방식을 취하고 있다는 신호입니다. sed그것만으로도 작업에 충분할 것입니다. or.or 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 

"인증 실패"와 일치하는 모든 행에 대해(참고,아니요"확실성필리핀 제도cation"), 이 sed스크립트는 줄의 시작부터 까지의 모든 항목 rhost=과 IP 주소 뒤의 모든 항목을 제거한 다음 해당 줄을 인쇄합니다.

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

sed명령이 루트로 실행 되더라도 sudo출력 리디렉션은 그렇지 않습니다. 이는 루트가 아닌 원래 쉘에서 수행됩니다. 출력 파일에 쓰기 위해 루트 권한도 필요한 경우 run 을 사용하십시오 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

관련 정보