今天豆子需要給幾個思科的交換機列個清單,比如看看某VLAN上到底連接了哪些端口,還需要知道這些端口連接設備的IP,Mac和DNS信息。
這個本事不是什麼複雜的事情,比如我可以用show vlan X 顯示對應的端口; 用show ip arp vlan X 通過arp來判斷Mac地址和IP地址,通過 show mac-address 來判斷和Mac地址綁定的端口等等,不過這樣子的操作很麻煩,每個地址我都得來回切換比較看看,有沒有稍微簡便一點的方法呢?
豆子不是專業的網工,所以我的有限知識裏面好像沒有比較省事的命令可以直接出結果,於是第一個反應就是看看powershell能不能稍微簡化一下我的手動操作吧。下面是我的操作過程
首先,我需要一個完整的arp表,很簡單了,交換機上直接ping 廣播地址好了。
ping 10.2.1.255
然後我需要保存這個arp列表
sh ip arp vlan 10
複製粘貼另存爲t1.csv表格
然後我需要一個Mac地址和端口對應的表
sh mac address-table vlan 10
複製粘貼另存爲t2.csv表格
接下來就是很簡單的PowerShell腳本了
#ping 10.2.1.255 #sh ip arp vlan ....> t1 #sh mac address-table vlan 10 ....> t2 $t1=import-csv C:\temp\t1.csv -head Protocol, IP, Age, Mac, Type, Interface $t2=gc C:\temp\t2.csv $obj=$t1| foreach{ $info=$t2 | select-string -Pattern $_.mac $test=$info | ConvertFrom-String -PropertyNames mark,vlan,mac, type, connecte, speed, port [pscustomobject]@{IP=$_.IP;mac=$test.mac;port=$test.port} } $obj | where-object{$_.port -notlike "po*"}| select IP, Mac, @{n='DNS';e={[System.Net.Dns]::gethostentry($_.IP).hostname}}, Port | tee -Variable result
結果如下
這樣子我就成功地獲取我需要的信息。