답변:
어떤 이유로 OS 핑거 프린팅을하려는 경우,보다 대상 포트 스캔을 수행 할 수 있습니다.
nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml
프린터와 인쇄 시스템에 공통적 인 포트를 검색합니다.
출력은 XML입니다.
이 답장은 첫 번째 질문에 직접 답변합니다. 두 번째 질문의 경우 명령을 이해하면 프린터 IP 주소를 파일에 넣을 수도 있습니다. 그래서 우리는 간다 :
nmap -p 515,631,9100 -oG - 10.81.129.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs --replace=$ipaddress snmpget -v 1 -O v -c public $ipaddress system.sysDescr.0 | sed 's/STRING:\s//'
nmap은 - 네트워크 스캔. ( Nmap.org )
-p 515,631,9100
TCP 포트 515, 631 및 9100을 스캔하십시오.-oG -
grep 가능 출력 형식을 사용하십시오.-sU -p 161
UDP 포트 161을 스캔하십시오.둔한 또는 AWK - 공정 열 중심의 텍스트 데이터. 기본적으로 공백은 선을 열로 구분합니다. ( 위키 백과 )
gawk '/regexp/'
gagul과 함께 regulair expression을 사용하여이 regulair expression과 일치하는 행을 필터링하십시오.gawk '{<code>}'
awk C와 유사한 입력 언어를 사용하여 출력을 조작하십시오.gawk '{/open/print $2}'
"열기"와 일치하는 줄을 검색하고 두 번째 열을 인쇄하십시오.xarg - 빌드 주어진 입력으로부터 명령을 실행합니다. 기본적으로 공백은 행을 인수로 구분합니다. ( 위키 백과 )
--delimiter='\n'
공백 대신 줄 바꿈 (\ n)마다 인수를 구분하십시오.--replace=$ipaddress
각 행마다 인수를 $ ipaddress에 저장하십시오 .snmpget 또는 snmpwalk - SNMP GET 요청을 사용하여 네트워크 엔티티에 대한 정보를 조회하십시오. ( net-snmp.org , Wikipedia의 SNMP에 대한 추가 정보 )
-c public
커뮤니티 문자열을 공개로 설정하십시오.-v 1
SNMP 버전을 1로 설정하십시오.-O v
OID를 인쇄하지 마십시오.system.sysDescr.0
쿼리 할 변수입니다. 이 특정 변수에 대한 설명 : "엔티티에 대한 텍스트 설명.이 값에는 시스템 하드웨어 유형, 소프트웨어 운영 체제 및 네트워킹 소프트웨어의 전체 이름 및 버전 식별 정보가 포함되어야합니다. 인쇄 가능한 ASCII 문자 만 포함해야합니다. "나오지도 - 구문 분석하고 변환 텍스트입니다. ( 위키 백과 )
's/day/night/'
줄에서 첫 번째 문자열 일을 찾아 밤으로 바꿉니다.'s/STRING:\s//'
STRING : \ s를 찾아 아무 것도 바꾸지 마십시오. 입력에서 STRING : \ s 을 (를) 제거합니다 . \ s 는 공백을 나타냅니다.관련된 UNIX 지원 명령이 있습니다. 개인적으로 Cygwin을 사용하여 Windows 컴퓨터 에서이 체인을 사용하여 해당 명령을 얻었습니다.
nmap -p 515,631,9100 -oG - 192.168.100.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs -I{} sh -c 'echo {} ; snmpget -v 1 -O v -c public {} system.sysDescr.0' | sed 's/STRING:\s//'