PowerShell 處理交換機端口信息

今天豆子需要給幾個思科的交換機列個清單,比如看看某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


結果如下

wKiom1eXC6DRVacWAACziZTG81M890.png

這樣子我就成功地獲取我需要的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章