Jawaban:
Jika Anda ragu melakukan Sidik Jari OS karena alasan tertentu, Anda dapat melakukan pemindaian port yang lebih bertarget:
nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml
Itu akan memindai port umum untuk printer dan sistem pencetakan.
Output dalam XML.
Balasan ini menjawab pertanyaan pertama Anda secara langsung. Untuk pertanyaan kedua, memahami perintah akan membiarkan Anda juga memasukkan alamat IP printer ke file. Jadi di sini kita mulai:
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 - Pemindaian jaringan. ( Nmap.org )
-p 515,631,9100 Pindai TCP Port 515, 631 dan 9100.-oG - Gunakan format output grep-mampu.-sU -p 161 Pindai port UDP 161.gawk or awk - Memproses data teks berorientasi kolom. Secara default, spasi putih memisahkan garis menjadi kolom. ( Wikipedia )
gawk '/regexp/' Gunakan ekspresi regulair dengan gawk untuk memfilter garis yang cocok dengan ekspresi regulair ini.gawk '{<code>}' Gunakan bahasa input mirip-C awk untuk memanipulasi output.gawk '{/open/print $2}' Cari baris yang cocok dengan "terbuka" dan cetak kolom kedua.xarg - Membangun dan menjalankan perintah dari input yang diberikan. Secara default spasi putih memisahkan baris menjadi argumen. ( Wikipedia )
--delimiter='\n' Pisahkan argumen per baris baru (\ n) alih-alih spasi putih.--replace=$ipaddressUntuk setiap baris, simpan argumen ke $ ipaddress .snmpget atau snmpwalk - Gunakan permintaan SNMP GET untuk menanyakan informasi tentang entitas jaringan. ( net-snmp.org , lebih lanjut tentang SNMP di Wikipedia )
-c public Setel string komunitas ke publik.-v 1 Setel versi SNMP ke 1.-O v Jangan cetak OID.system.sysDescr.0Variabel ke kueri. Deskripsi variabel khusus ini: "Deskripsi tekstual entitas. Nilai ini harus mencakup nama lengkap dan identifikasi versi dari jenis perangkat keras sistem, sistem operasi perangkat lunak, dan perangkat lunak jaringan. Ini wajib bahwa ini hanya berisi karakter ASCII yang dapat dicetak. "sed - Memilah dan mengubah teks. ( Wikipedia )
's/day/night/' Temukan kemunculan pertama string day dalam satu baris, dan gantilah dengan malam.'s/STRING:\s//'Temukan STRING: dan ganti dengan apa pun. Ini menghapus STRING: dari input. \ s singkatan spasi a.Ada beberapa perintah yang didukung UNIX yang terlibat. Secara pribadi saya membuat rantai ini bekerja pada mesin Windows menggunakan Cygwin untuk mendapatkan perintah-perintah itu.
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//'
Cara termudah adalah memindai dengan nmap -O: nmap biasanya akan menentukan dengan benar apakah sebuah mesin adalah printer atau tidak berdasarkan OS.
nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile
Seharusnya membuatnya menjadi satu entri per baris dan membuangnya ke file yang disebut "outfile". Jelas mengubah rentang ip ke rentang apa pun yang Anda pindai