nmap에서 반환된 결과에서 여러 정규식 일치 그룹을 반환합니다.

nmap에서 반환된 결과에서 여러 정규식 일치 그룹을 반환합니다.

IP 목록에 대해 오픈 릴레이 테스트를 실행하는 nmap 스크립트가 있습니다. 원래 호스트에 명령에 지정된 포트에 대한 열린 포트가 있는 것으로 발견된 경우 호스트 이름과 IP만 반환해야 했지만 열린 포트가 NSE 테스트가 성공했다는 의미는 아니기 때문에 이는 부정확해 보입니다. 그래서 호스트 이름과 IP + NSE 결과를 한 줄로 반환하고 싶습니다.

내가 사용하는 명령은 다음과 같습니다

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt

이 명령의 출력 예는 다음과 같습니다.

*Nmap 6.40 기준(http://nmap.org) 2017년 8월 8일 07시 25분 PDT

Nmap 스캔 보고서foo01.bar.com (10.10.10.1)

호스트가 시작되었습니다(0.0020초 지연).

표시되지 않음: 닫힌 포트 3개

항구 주 서비스

25/tcp 오픈 smtp

|_smtp-open-relay: 서버는 오픈 릴레이입니다(5월 16일 테스트).

2526/tcp 열림 알 수 없음

Nmap 스캔 보고서foo02.bar.com (10.10.10.2)

호스트가 시작되었습니다(0.082초 지연).

표시되지 않음: 닫힌 포트 4개

항구 주 서비스

25/tcp 오픈 smtp

|_smtp-open-relay: SMTP EHLO nmap.scanme.org: 데이터 수신 실패: 연결이 닫혔습니다.

Nmap 완료됨: 2.16초 안에 10개의 IP 주소(최대 6개 호스트)를 스캔했습니다*

다음을 출력해야 합니다.

foo01.bar.com (10.10.10.1) smtp-open-relay: 서버는 오픈 릴레이입니다 (5/16 테스트)

foo02.bar.com (10.10.10.2) smtp-open-relay: SMTP EHLO nmap.scanme.org: 수신 실패

일반적인 bash 도구/명령(grep 또는 sed 등)을 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

그리고:

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt \
| awk '/^ *Nmap scan report/{ sub(/^ *Nmap scan report for */, "", $0); printf "%s ",$0 }
       /_smtp-open-relay/{ sub(/^ *\|_/, "", $0); print $0 }'

관련 정보