이 스크립트는 CentOS7에서 어떻게 작동합니까?

이 스크립트는 CentOS7에서 어떻게 작동합니까?

CentOS7 튜토리얼에서 SSH를 통해 연결을 시도하는 사용자 수에 대한 작은 테이블을 얻는 명령을 찾았습니다.

|tryipuser

이것

코드는 아래와 같이 표시됩니다.

zgrep -hi "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -rn | head -20

zgrep -hi "Failed password for " /var/log/secure* | 
sed "s/invalid user //" | 
tr -s " " | 
awk '{print $11" "$9}' | 
sort | 
uniq -c | 
sort -rn | 
head -20

어떻게 작동하는지 알고 싶습니다.

답변1

첫 번째 명령은 /var/log/secure 로그에서 실패한 로그인 시도를 검색합니다.

zgrep -hi "Failed password for " /var/log/secure*

다음과 같은 결과가 생성됩니다.

Aug  1 21:22:53 jbclamp001 sshd[40401]: Failed password for jbutryn from ip.ip.ip.ip port 55843 ssh2

주문하다:

sed "s/invalid user //"

검색어 '잘못된 사용자'를 ''로 바꾸세요.

주문하다:

tr -s " "

추가 공백 문자는 문자열에서 제거됩니다.

주문하다:

awk '{print $11" "$9}'

그런 다음 열 11과 9만 가져와 인쇄합니다(이것은 IP 주소와 사용자 이름입니다).

주문하다:

sort

그러면 모든 결과가 영숫자로 정렬되나요?

주문하다:

uniq -c

중복된 값은 모두 제거됩니다

주문하다:

sort -rn

목록을 역순으로 정렬하시겠습니까?

주문하다:

head -20

결과의 처음 20개 값만 표시됩니다.

관련 정보