엔맵 출력

엔맵 출력

저는 네트워크에 단 한 대의 컴퓨터와 한 대의 프린터만 있는 프로젝트를 진행하고 있습니다. 내가 원하는 것은 프린터가 네트워크에 연결될 때를 감지하는 것입니다. 나는 또한 컴퓨터가 192.168.3.1. 그러나 DHCP를 사용하면 프린터 주소를 알 수 없습니다(예, 더 쉽게 하기 위해 정적으로 만들 수 있지만 "그들"은 그것을 좋아하지 않습니다. "그들"은 그것이 동적이기를 원합니다)

내가 가지고 있는 것은 다음을 수행하는 스크립트이며 작동합니다.

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/' \
  | sed 's/Nmap scan report for //'

엔맵 출력

 Nmap scan report for 192.168.3.1
 Host is up (0.014s latency).
 Nmap scan report for 192.168.3.100
 Host is up (0.012s latency).
 Nmap done: 256 IP addresses (2 hosts up) scanned in 2.54 seconds

스크립트 출력

 192.168.3.100

작동하는 데 몇 초 밖에 걸리지 않지만 더 좋고, 더 깨끗하고, 더 빠른 방법이 있습니까?

답변1

awk이를 수행하려면 다음 명령을 사용할 수 있습니다 .

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/{print $NF}'

awk일치하는 줄의 마지막 필드를 인쇄하라는 메시지가 표시됩니다.

답변2

서브넷의 일부에 관심이 없다는 것을 알고 있는 경우 전체 서브넷을 스캔할 필요가 없습니다. (컴퓨터를 피한다는 것은 그 결과를 버릴 필요가 없다는 것을 의미합니다.)

nmap -oG - -sn 192.168.3.2-254 | awk '$NF=="Up" {print $2}'

grep또는 대신 XML 출력을 사용하려는 경우

nmap -oX - -sP 192.168.3.2-254 | xmlstarlet sel -t -m '//address[@addrtype="ipv4"]' -v '@addr' -n

버전에 필요한 경우 -sP최신 버전을 대신 사용하세요.-snnmap


그런데 시스템 관리자는 프린터가 DHCP를 사용하기를 원할 수 있지만 알려진 불변 주소를 갖도록 준비하지 말아야 할 이유는 없습니다. (프린터 소프트웨어가 예기치 않게 변경되는 IP 주소에 대해 걱정할 필요가 없도록 네트워크에 있는 프린터에 대해 이 작업을 수행합니다.) 이를 정적(비DHCP) 주소와 구별하기 위해 "고정" 주소라고도 합니다. 또는 의사 무작위 동적(DHCP) 주소입니다.

DHCP 서버 자체가 서브넷에 없는 것이 확실합니까? 그렇지 않으면 프린터가 동적 주소를 어떻게 얻습니까?

답변3

아마도 더 효율적인 솔루션은 다음을 사용하는 것입니다 grep(Perl 정규식 지원과 함께 GNU grep 또는 grep 필요).

nmap -sP 192.168.3.0/24 \
  | grep -o -P '192.168.3.(?!1$)[0-9]+'

이것은 192.168.3제외로 시작하는 모든 IP 주소와 일치하는 grep -o (만)입니다.192.168.3.1

답변4

프린터의 IP 주소가 있으면 Get Hostname 을 사용할 수 있습니다 nmblookup -A 'IP address'. IP 주소로 컴퓨터를 찾는 대신 이 이름을 가진 컴퓨터를 네트워크에 요청하게 되므로 나중에 IP가 변경될 경우 도움이 될 것입니다.

관련 정보