theoforce 发表于 2018-9-2 07:33:47

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
  
@{IP=$_.IP;mac=$test.mac;port=$test.port}
  
}
  
$obj | where-object{$_.port -notlike "po*"}| select IP, Mac, @{n='DNS';e={::gethostentry($_.IP).hostname}}, Port | tee -Variable result
  结果如下

  这样子我就成功地获取我需要的信息。


页: [1]
查看完整版本: PowerShell 处理交换机端口信息