今天豆子需要给几个思科的交换机列个清单,比如看看某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
结果如下
这样子我就成功地获取我需要的信息。