for 루프를 사용하지 않고 여러 행을 매개변수에 전달하려면 어떻게 해야 합니까?

for 루프를 사용하지 않고 여러 행을 매개변수에 전달하려면 어떻게 해야 합니까?

스캔하도록 요청받은 IP 목록이 포함된 nmap 출력을 처리하는 다음 명령이 있습니다.

cat ping-sweep.txt | grep "report for" | cut -d " " -f5

그러면 웹 서버를 검색하려는 IP 목록(한 줄에 하나씩)만 제공됩니다.

다음 명령을 사용하여 단일 호스트를 스캔할 수 있습니다.

nmap -v -p 80,443,8080 10.1.1.1

목록에 있는 모든 IP에 대해 이 스캔을 수행하고 싶지만 nmap으로 연결하면 작동하지 않는 것 같습니다. 이를 수행하려면 bash 스크립트를 만들어야 합니까 foreach, 아니면 간단한 것이 빠졌습니까?

답변1

nmap스캔할 모든 주소를 다음과 같은 매개변수로 제공 할 수 있습니다 .

nmap -v -p 80,443,8080 $(grep "report for" ping-sweep.txt | cut -d" " -f5)

이는 grep파일에서 실행되고(필수 아님 cat) grep필터링된 출력을 전달하며 cut그 결과는 nmap명령줄을 작성하는 데 사용됩니다. 이것은 ... 불리운다명령 대체.

셸에는 루프가 있으며 다양한 방법으로 루프를 사용할 수 있습니다.

grep "report for" ping-sweep.txt | cut -d" " -f5 | while read ip; do
    nmap -v -p 80,443,8080 "${ip}"
done

또는

for ip in $(grep "report for" ping-sweep.txt | cut -d" " -f5); do
    nmap -v -p 80,443,8080 "${ip}"
done

nmap둘 다 한 번에 하나의 주소만 사용하여 작동합니다.

답변2

첫 번째 단계는 Nmap을 설계된 방식대로 사용하는 것입니다. Nmap은 각 포트 스캔 전에 호스트 검색("핑 스캔")을 수행하므로 다음과 같은 간단한 명령을 사용하여 두 단계를 동시에 수행할 수 있습니다.

nmap -p 80,443,8080 [TARGETS]

포트 스캐닝과 별도로 호스트 검색을 수행해야 하는 경우 Nmap의 강력한 기계 판독 가능 출력 옵션을 사용하십시오.XML또는그렙불산출. 이전 버전의 Nmap의 경우 가장 쉬운 방법은 호스트 검색을 수행하고 다음과 같이 Grepable 출력을 저장하는 것입니다.

nmap -sn [TARGETS] -oG ping-sweep.gnmap

그런 다음 awk를 사용하여 IP 주소를 쉽게 추출할 수 있습니다.

awk '/Status: Up/{print $2}' ping-sweep.gnmap > targets.txt

Nmap으로 직접 가져옵니다.

nmap -p 80,443,8080 -iL targets.txt

또는 Nmap 7.00 이상을 사용하면 저장된 XML 출력 형식을 사용할 수 -oX ping-sweep.xml있으며대상-xmlNSE 스크립트:

nmap -p 80,443,8080 --script targets-xml --script-args newtargets,iX=ping-sweep.xml

이러한 옵션 중 하나를 사용하여 호스트 검색 검색이 충분히 새로운 경우 -Pn포트 검색의 호스트 검색 단계를 건너뛰는 옵션을 추가할 수 있습니다. 이렇게 하면 동일한 호스트가 여전히 실행 중일 수 있으므로 스캔 속도가 약간 절약됩니다.

너 뭐야정말 해서는 안되는 일이다루핑과 관련된 솔루션이거나 xargs결국 각 대상에 대해 별도의 Nmap 인스턴스를 시작하게 됩니다. 이는 각 인스턴스가 네트워크 용량을 모니터링하기 위해 데이터 파일을 로드하고 시간 제한이 있는 프로브를 보내는 작업을 반복해야 하고 개별 인스턴스가 협력하는 대신 네트워크 리소스를 놓고 서로 경쟁하기 때문에 낭비적이고 불필요합니다. 또한 개별 출력을 다시 결합해야 합니다.

답변3

xargs가장 일반적 으로 다음과 같이 각 줄을 명령줄 인수로 명령에 전달할 수 있습니다 .

cat ping-sweep.txt | grep "report for" | cut -d " " -f5 | xargs -I'{}' nmap -v -p 80,443,8080 '{}'

관련 정보