今天豆子需要给几个思科的交换机列个清单,比如看看某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
|
结果如下
这样子我就成功地获取我需要的信息。
本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1830133,如需转载请自行联系原作者