미리 정의된 특정 형식으로 nmap의 출력 형식을 지정하는 방법

미리 정의된 특정 형식으로 nmap의 출력 형식을 지정하는 방법

간단한 출력을 찾기 위해 nmap 쉘을 실행한다고 가정해 보겠습니다. 우리는 모두 다음 사항에 대해 잘 알고 있습니다.

Starting Nmap 6.47 ( http://nmap.org ) at.... 
Nmap scan report for www.google.com (172.217.26.68)
Host is up (0.085s latency).
rDNS record for 172.217.26.68: sin10s02-in-f68.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 9.38 seconds

이제 특정 포트 상태와 서비스를 원합니다. 예:

Open ports are:
80
443

또는 그런 것. 요점은 특정 출력을 가져와 다른 곳에서 사용하고 싶다는 것입니다. 누구든지 나에게 매우 간단한 예를 들어 줄 수 있습니까?

답변1

다음 코드를 사용해 보세요:

echo "Open ports are: ";nmap $HOST |awk -F'/' '/open/ {print $1}'

답변2

$ echo 'Open ports are:';nmap localhost -oG -|grep -oP '[0-9]*(?=/open)'
Open ports are:
22
6000

답변3

your_nmap_cmd |
sed -ne '
  /^PORT/!d
  h;n              # grab PORT line & prepare for port info
  \|/|!q           # we are done once no / found so quitting
  s|/.* open .*||p # display port num only for open state
  G;D              # without reading next input goto top
'

관련 정보