PowerShell 处理交换机端口信息

简介:

今天豆子需要给几个思科的交换机列个清单,比如看看某VLAN上到底连接了哪些端口,还需要知道这些端口连接设备的IP,Mac和DNS信息。


这个本事不是什么复杂的事情,比如我可以用show vlan X 显示对应的端口; 用show ip arp vlan X 通过arp来判断Mac地址和IP地址,通过 show mac-address 来判断和Mac地址绑定的端口等等,不过这样子的操作很麻烦,每个地址我都得来回切换比较看看,有没有稍微简便一点的方法呢?


豆子不是专业的网工,所以我的有限知识里面好像没有比较省事的命令可以直接出结果,于是第一个反应就是看看powershell能不能稍微简化一下我的手动操作吧。下面是我的操作过程


首先,我需要一个完整的arp表,很简单了,交换机上直接ping 广播地址好了。

1
ping  10.2.1.255


然后我需要保存这个arp列表

1
sh ip arp vlan 10

复制粘贴另存为t1.csv表格


然后我需要一个Mac地址和端口对应的表

1
sh mac address-table vlan 10

复制粘贴另存为t2.csv表格


接下来就是很简单的PowerShell脚本了

1
2
3
4
5
6
7
8
9
10
11
#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

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






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1830133,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
关系型数据库 MySQL 网络安全
新建的windows服务器不能ping通?因为没有关闭防火墙
新建的windows服务器不能ping通?因为没有关闭防火墙
|
11月前
【网络共享解决】Internet连接共享访问被启用时,出现了一个错误 无法启用Internet连接共享。为LAN连接配置的IP地址需要使用自动IP寻址。
【网络共享解决】Internet连接共享访问被启用时,出现了一个错误 无法启用Internet连接共享。为LAN连接配置的IP地址需要使用自动IP寻址。
1750 0
|
11月前
|
应用服务中间件 nginx Windows
windows中查看本机ip,网关信息,端口号
windows中查看本机ip,网关信息,端口号
181 0
|
Windows
Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能
Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能
475 0
Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能
|
Linux Windows 应用服务中间件
|
网络协议 网络虚拟化