Nếu việc sử dụng tiện ích của bên thứ ba không phải là vấn đề đối với bạn, thì tôi khuyên bạn nên dùng thử:
quét arp (có sẵn qua Homebrew )
brew install arp-scan
arp-scan --localnet
finger (tải xuống và cài đặt gói "CLI nhúng cho máy tính để bàn" từ finger.com hoặc qua Homebrew brew cask install fing
)
sudo fing -r 1 -d true -o table,text
Cả hai tiện ích có một số chế độ và tính năng bổ sung. Tôi đề nghị đọc hướng dẫn đầy đủ để tận dụng tối đa chúng.
Nếu bạn cần tránh sử dụng các công cụ của bên thứ ba thì đây là cách để làm điều gì đó tương tự với các lệnh tích hợp. Bạn có thể chạy các tương tác này, nhưng có thể dễ dàng lưu nó dưới dạng tập lệnh. NB để giữ cho nó ngắn, kịch bản này không có kiểm tra lỗi, và chỉ hoạt động trên / 24 mạng con. Sửa đổi nó để làm việc trên các mạng con có kích thước khác là một bài tập cho người đọc :)
#!/usr/bin/env bash
tab=$'\t'
pIF=$(echo "show State:/Network/Global/IPv4" | scutil | awk -F: '/PrimaryInterface/{sub(/ /,"",$2); print $2}')
sn=$(ipconfig getifaddr $pIF | sed -En 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
for i in {1..254}; do ping -i0.1 -W100 -c1 $sn.$i | grep from; done
arp -a | grep $pIF | sed -e 's/^\?/unnamed/' -e "s/\ at\ /${tab}/g" -e "s/\ on\ /${tab}/g" -e 's/\ ifscope.*$//g' | awk 'BEGIN { FS="\t"; OFS="\t"; printf "%-17s\t%-15s\t%s\n", "MAC","INTERFACE","HOSTNAME (IP)" } { if($2!="(incomplete)") {printf "%-17s\t%-15s\t%s\n",$2,$3,$1}}'
Điều này sẽ xuất ra một cái gì đó như:
MAC INTERFACE HOSTNAME (IP)
0:90:b:7a:85:62 en0 r1.lan (192.168.20.1)
2c:36:f8:48:2b:47 en0 cisco-sg300-10p.lan (192.168.20.2)
84:78:ac:a6:95:a0 en0 cisco-sg300-20.lan (192.168.20.3)
b4:fb:e4:cb:93:85 en0 wap1.lan (192.168.20.10)
0:11:32:10:cd:c1 en0 nas.lan (192.168.20.20)
0:11:32:3d:99:c9 en0 nas2.lan (192.168.20.21)
0:11:32:10:cd:c1 en0 unnamed (192.168.20.23)
d4:4b:5e:fe:6a:75 en0 brwd44b5efe6a75.lan (192.168.20.90)