텍스트를 csv 형식으로 출력하려면 nmap 스크립트가 필요합니다.

텍스트를 csv 형식으로 출력하려면 nmap 스크립트가 필요합니다.

궁극적으로 데이터베이스에 일부 정보를 삽입하고 싶습니다. 그래서 다음 형식의 파일(아마도 nmap)을 출력하려고 합니다.

10.1.150.1,Up,1/3/2012,host.domain.lan
10.1.150.2,Down,1,3/2012,host2.domain.lan

nmap 스캔에서 날짜를 가져올 필요는 없지만 도움이 될 것입니다. 데이터베이스에 데이터를 삽입할 때 추가할 수 있습니다.

나는 nmap이 grep, awk 및 sed foo를 사용하여 이를 수행할 수 있다고 확신하지만 그것은 내 강점이 아닙니다.

편집: 출력 형식에 대한 제안을 받을 수 있습니다. XML? 매일 이 작업을 실행하고(제공 또는 수신) 결과를 MySQL로 가져와야 합니다.

EDIT2: 여기까지 왔습니다.

nmap -sn -oG - 192.168.0.50-100 | grep Host | awk  '{print $2","$5","$3}'

이것은 나에게 다음을 제공합니다:

192.168.0.75,Up,()
192.168.0.76,Up,(server01.domain.com)
192.168.0.77,Up,(server02.domain.com)
192.168.0.78,Up,(server03.domain.com)

다음으로, 브래킷을 제거할 수 있나요? 날짜를 추가하시겠습니까? Nmap은 항상 시작 및 종료 시간을 표시하지만 각 행을 포함하지 않으므로 awk 문으로는 이를 얻을 수 없습니다.

답변1

답변2

다른 프로그램(데이터베이스 등)에서 Nmap 출력을 사용하려면 항상 XML 출력( -oX)을 사용하세요. 선호하는 프로그래밍 언어에 따라 일반적으로 이미 작성된 파서 라이브러리가 있습니다.Nmap::Parser펄의 경우,Nmap::Parser루비의 경우,엔디프(Nmap과 함께 제공) Python용. 정말로 명령 파이프를 사용해야 한다면 몇 가지 XML 유틸리티(XmlStarlet꽤 인기가 있는 것 같습니다.)

필요에 따라 Nmap XML 가져오기를 지원하는 기존 프로젝트를 활용할 수 있습니다.메타 분석 소프트웨어,드라디스, 그리고개방형 부가 가치 서비스Nmap에서 가져오고 데이터베이스에 저장하는 것을 지원하는 매우 다른 도구입니다.

"Grepable" 출력(더 이상 사용되지 않음) 사용을 고집하더라도 구문 분석, 특히 각 줄에 날짜를 입력하는 것과 같은 작업을 위해 실제 스크립팅/프로그래밍 언어(Perl, Python, Ruby 등)를 사용하는 것이 좋습니다. 괄호. Nmap과 관련된 명령 파이프라인은 종종 다음과 같이 표시됩니다.

nmap -sn -oG - 192.168.0.50-100 | perl -lanE 'if(/initiated (.*?) as:/){$d=$1;$,=","}else{print@F[1,4],$d,$F[2]=~/\((.*)\)/ if/Status:/}'

관련 정보