시작된 IP 목록을 얻으려고 하므로 nmap
먼저 모든 IP를 텍스트 파일에 저장하십시오.
nmap -v -sn 10.10.10.1-254 -oG hosts.txt
nmap
이제 이 IP에 대해 다른 명령을 실행하여 텍스트 파일에서 IP를 구문 분석하고 가져오고 싶습니다 . 다음을 시도하고 있지만 작동하지 않습니다. 변수 v
가 IP 값을 보유하지 않습니다.
#!/bin/bash
while read line; do
v=$line|grep 'Up' -B1|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
echo $v
done < hosts.txt
답변1
스크립트가 올바르게 작성되지 않은 것 같습니다.
v=$line | grep [...]
변수를 할당하면 출력이 없으므로 grep
.
awk
파일을 가리키는 것이 더 간단할 수 있습니다 hosts.txt
.
$ nmap -v -sn 10.10.10.1/24 -oG hosts.txt > /dev/null 2>&1
$ awk '$NF=="Up" { print $2 }' hosts.txt
생성된 파일의 형식을 고려하면 nmap
(다른 IP 범위를 양해해 주시기 바랍니다. 분명히 다른 네트워크에 있지만 예제는 여전히 작동합니다):
$ head hosts.txt
# Nmap 7.60 scan initiated Fri May 11 10:14:28 2018 as: nmap -v -sn -oG hosts.txt 172.28.9.67/24
# Ports scanned: TCP(0;) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 172.28.9.0 (hostname1.internal) Status: Up
Host: 172.28.9.1 (hostname2.internal) Status: Up
표시된 호스트에만 관심이 있다면 Status: Up
마법의 단어가 줄의 마지막 단어입니다. 따라서 우리는 일반적으로 awk
마지막 필드가 동일한 줄만 보고 Up
두 번째 필드(예: IP 주소)를 인쇄합니다.