這裡介紹如何使用
ping
與 arp
指令快速清查區域網路的電腦與網路設備,建立 IP 位址與網路卡 MAC 卡號對應表。
對於網路管理者(網管)來說,掃描區域網路設備、取得所有電腦的 IP 位址與 MAC 卡號對應表是基本的技能,而且也是一項時常需要做的工作,如果剛好臨時遇到需要掃描 IP 與 MAC 卡號,手上又沒有適合的軟體時,就可以使用各種作業系統都有內建的
ping
與 arp
指令來處理,以下是使用教學以及範例指令稿。
ping
與 arp
指令
ping
與 arp
指令是一般的 Windows、Mac OS X 與 Linux 系統都會內建的指令,所以使用這種方法掃描網路,完全不需要安裝任軟體,只需要撰寫一個簡單的指令稿即可,對於網管來說相當方便而且實用。Linux 系統
這是適用於 Linux 系統的 bash 指令稿,執行後可以掃描整個 Class C 區域網路的 IP 與 MAC 卡號對應表:
#!/bin/bash # Ping 區域網路中所有的 IP 位址 for ip in 192.168.1.{1..254}; do # 刪除舊的 arp 記錄 sudo arp -d $ip > /dev/null 2>&1 # 藉由 ping 取得新的 arp 資訊 ping -c 5 $ip > /dev/null 2>&1 & done # 等待所有背景的 Ping 結束 wait # 輸出 ARP table arp -n | grep -v incomplete
我們使用 bash 的
for
迴圈,配合背景子行程的方式同時 ping 所有的網路設備,這樣可以讓程式大幅加速,幾秒鐘就可以 ping 完整個 Class C 網路,關於這種平行化 bash 指令稿的撰寫方式,可以參考 Bash 平行執行背景子行程與 wait
的教學。
執行之後,輸出會類似這樣:
Address HWtype HWaddress Flags Mask Iface 192.168.1.1 ether 10:7b:ef:12:4f:af C wlan0 192.168.1.102 ether 74:23:44:23:d3:96 C wlan0 192.168.1.105 ether 28:e3:1f:50:b9:94 C wlan0
Mac OS X 系統
在 Mac OS X 中使用
ping
與 arp
的 bash 指令稿與 Linux 幾乎相同,只是在 arp
指令的參數有些差異:#!/bin/bash # Ping 區域網路中所有的 IP 位址 for ip in 140.110.99.{1..254}; do # 刪除舊的 arp 記錄 sudo arp -d $ip > /dev/null 2>&1 # 藉由 ping 取得新的 arp 資訊 ping -c 5 $ip > /dev/null 2>&1 & done # 等待所有背景的 Ping 結束 wait # 輸出 ARP table arp -na | grep -v incomplete
輸出的格式有些不同:
? (192.168.1.4) at 70:28:8b:26:1b:ba on en1 ifscope [ethernet] ? (192.168.1.11) at 60:e3:27:14:a5:dc on en1 ifscope [ethernet] ? (192.168.1.12) at 84:c9:b2:78:cd:ee on en1 ifscope [ethernet]
Windows 系統
Windows 系統上使用
ping
與 arp
指令的方式比較不同,不過大原則是一樣的,都是用 ping
指令掃過一輪之後,執行 arp
指令輸出 arp table,請開啟命令提示字元,執行以下的指令。
首先刪除舊的 arp table,這一行需要用管理者權限執行:
arp -d
使用
for
迴圈將每一個 IP 位址都 ping 過一次:for /L %i in (1,1,254) do ping 192.168.1.%i -n 1 -w 300 > NUL
執行
arp
指令,輸出 arp table:arp -a | find "192.168" | find "動態"
沒有留言:
張貼留言