Keluarkan hanya alamat IP dari mesin online dengan nmap

19

Saya tahu cara menggunakan nmapuntuk menemukan daftar host yang sedang online. Yang ingin saya lakukan adalah mendapatkan daftar hanya alamat IP mereka, sekarang ini menampilkan informasi tambahan seperti

Nmap scan report for 192.168.x.x' and 'Host is up (0.12s latency).

Yang saya inginkan adalah dapat menjalankan nmapperintah, mendapatkan dokumen teks dari alamat IP yang sedang online.

Apakah ini mungkin?

jasonwryan
sumber

Jawaban:

33

Ini adalah yang umum:

nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up$/{print $2}'

Ikhtisar opsi dan perintah:

  • -nmematikan resolusi nama terbalik, karena Anda hanya ingin alamat IP. Pada LAN lokal ini mungkin juga merupakan langkah paling lambat, sehingga Anda mendapatkan peningkatan kecepatan yang baik.
  • -snberarti "Jangan lakukan pemindaian port." Itu sama dengan yang lebih tua, usang -sPdengan "ping scan" mnemonik.
  • -oG -mengirimkan output "grepable" ke stdout, yang akan disalurkan ke awk.
  • /Up$/ hanya memilih baris yang diakhiri dengan "Naik", mewakili host yang sedang online.
  • {print $2} mencetak bidang yang dipisahkan spasi dengan spasi kedua, yang merupakan alamat IP.
bonsaiviking
sumber
Mengapa memiliki $ after /Up? Saya menemukan bahwa perintah nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'memberikan hasil yang sama.
Michael
1
@Michael Ini hanya tingkat keamanan ekstra untuk memastikan kami tidak mencetak sampah kalau-kalau ada yang lain berisi string "Naik". Dengan begitu ia bekerja bahkan jika Anda menjalankannya terhadap keluaran yang dapat diterima dalam file dari jenis pemindaian yang berbeda seperti -sVyang dapat berisi string yang tidak dapat diprediksi dari spanduk layanan jaringan.
bonsaiviking
3

Anda bisa mengirimkannya ke awk:

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.10
192.168.1.20
192.168.1.30
jasonwryan
sumber