Chỉ xuất các địa chỉ IP của các máy trực tuyến có nmap


19

Tôi biết cách sử dụng nmapđể tìm danh sách các máy chủ hiện đang trực tuyến. Những gì tôi muốn làm là lấy một danh sách chỉ các địa chỉ IP của họ, bây giờ nó sẽ hiển thị thêm thông tin như

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

Điều tôi muốn là có thể chạy một nmaplệnh, lấy tài liệu văn bản về các địa chỉ IP hiện đang trực tuyến.

Đây có phải là ở tất cả có thể?

Câu trả lời:


33

Đây là một phổ biến:

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

Nhanh chóng tải các tùy chọn và lệnh:

  • -ntắt độ phân giải tên ngược, vì bạn chỉ muốn địa chỉ IP. Trên mạng LAN cục bộ, đây có lẽ là bước chậm nhất, do đó bạn sẽ tăng tốc độ tốt.
  • -sncó nghĩa là "Đừng thực hiện quét cổng." Nó giống như cũ hơn, không dùng nữa -sPvới "ping scan".
  • -oG -gửi đầu ra "grepable" tới thiết bị xuất chuẩn, được chuyển đến awk.
  • /Up$/ chỉ chọn các dòng kết thúc bằng "Up", đại diện cho các máy chủ đang trực tuyến.
  • {print $2} in trường được phân tách bằng khoảng trắng thứ hai, là địa chỉ IP.

Tại sao có $ sau /Up? Tôi thấy rằng lệnh nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'cung cấp kết quả tương tự.
Michael

1
@Michael Đó chỉ là một mức độ an toàn bổ sung để đảm bảo chúng tôi không in rác trong trường hợp có thứ gì khác chứa chuỗi "Up". Bằng cách đó, nó hoạt động ngay cả khi bạn chạy nó với đầu ra có thể thay đổi trong một tệp từ một kiểu quét khác như -sVcó thể chứa các chuỗi không thể đoán trước từ các biểu ngữ dịch vụ mạng.
bonsaiviking

3

Bạn có thể dẫn nó đến 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.