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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值