如何查看未使用的交换机端口?


48

在大型Cisco Catalyst交换机堆栈上,几乎所有交换机端口均已打补丁。我需要确定未使用的端口,用于连接其他设备。

在进行交换机端口,电缆连接,配线架和可能的终端设备的插座之后,这很费力,即使那样,也可能会临时使用插座。查看端口LED的活动并不可靠,因为可以关闭用户设备。

通过IOS命令检测所有未使用的交换端口的最简单方法是什么?


有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


41

我经常使用

sh int | i (FastEthernet|0 packets input)

或与GigabitEthernet相同,无论我要检查哪种接口。

  • sh int(是show interfaces)给出了所有接口的Ste状态的巨大列表
  • 管道符号|可用于过滤,也可用于搜索表达式
  • | i(用于include)过滤与以下搜索表达式匹配的输出
  • (...|...)用来匹配两个条件:接口名称和我喜欢看到的状态,我们可以在这里使用正则表达式,例如“或”表达式

输出如下所示:

...
FastEthernet1/0/31 is up, line protocol is up (connected)
     95445640 packets input, 18990165053 bytes, 0 no buffer
FastEthernet1/0/32 is up, line protocol is up (connected)
FastEthernet1/0/33 is up, line protocol is up (connected)
FastEthernet1/0/34 is down, line protocol is down (notconnect)
     0 packets input, 0 bytes, 0 no buffer
FastEthernet1/0/35 is down, line protocol is down (notconnect)
FastEthernet1/0/36 is up, line protocol is up (connected)
FastEthernet1/0/37 is down, line protocol is down (notconnect)
     0 packets input, 0 bytes, 0 no buffer
...

现在,我可以看到我的候选项,即使我的表达式与以0结尾的数字匹配,但实际上随着时间的推移输入了0个数据包。我可以使其更加完美,但易于记忆也是一个好处。我的候选项是每0个数据包输入行之前的接口名称。

  • 检查每个选定的接口是否确实未被使用 sh int <name>
  • 时不时要清除计数器: clear counters [type number]

最好关闭未使用的交换机端口。因此,使用sh ip int bri或类似方法可以轻松识别它们。如果使用以前已明确关闭的切换端口,也不会遇到问题。


5
Device#Show int | 我未连接将仅显示关闭/关闭的接口。
Artanix

1
答案是“网络工程师1.0”样式。认真吗 管道包括?:)而是从设备中提取数据,并使用标准UNIX工具对其进行处理,然后编写自己的脚本/程序以生成报告。
netdad

2
@stefan,不需要括号...这在ios中效果很好:sh int | i FastEthernet|0 packets input
Mike Pennington

另外,如果删除“快速”部分,则将匹配Gig,快速和常规以太网接口
Remi Letourneau 2014年

28

最终...文档。您需要知道每条跳线在哪里都可以100%确定您没有断开某人可能期望在某些时候工作的东西。仅因为端口当前处于“关闭”状态并不意味着没有人在使用该端口。同样,仅因为计数器当前为零并不意味着在不久的将来它不会被使用或不再被使用-计数器可以清除,并且计数器在启动时重置为零。

我曾在ISP和大型企业工作,文档是了解内容的关键。没有它,随机猜测将导致无数糟糕的日子……当您将DSL线路连接到其他人,重复地址分配,关闭错误的接口等时,客户会非常生气。如果没有文档,在数千条电缆中查找数十根电缆可能会很痛苦(而且端口描述很简单)。


2
我同意,文档绝对重要,并且我会记录补丁和端口配置。仅在大型办公室中,其中98%的端口具有相同的标准配置,并且工作地点迅速变化,并且修补工作是由第一级服务台完成的,因此我无法安全地进行记录,因此我需要检查所有使用的内容。当然,如果没有文档说明,将不会碰到非标准端口。
Stefan

必须否决这个问题(我认为这是我的第一个。)这个问题更多的是关于“我现在可以审核什么”与“我认为我有什么?” 文档很棒。有时,无关紧要。
netdad

用于连接更多设备 ”,因此他正在寻找可用于其他地方的免费端口,而不是对其基础结构进行审核。正确的文档记录是唯一可以肯定地知道的方法,否则……请跟踪电缆(他说这是很痛苦的。)
Ricky Beam

2
文档非常有用,而且对您有很大帮助。但是,有时您“继承”一个几乎没有文档或根本没有文档并且没有收集信息的网络。例如,我工作的一个网络有成千上万个交换机端口,而在一栋大楼中,配线架上标有“ Bob M。”,“ Sally J.”等。有时,您只需要事先掌握可以收集的信息即可。 (并希望您有文档)。
YLearn

文档也不总是100%准确。但总而言之,这里有您的文档,并且一直在跟踪端口。可能已经提供了一些方法来检测最近的活动(最近是由于计数器清零事件造成的),但是您仍然可能会重用某个人可能仍认为已连接的端口。我一直被重用那些我以为人们不再使用的端口了-墨菲定律。
Ricky Beam

12

我也喜欢

sh int | inc line protocol is|Last input

哪个输出

FastEthernet0/29 is down, line protocol is down (notconnect)
  Last input never, output never, output hang never
FastEthernet0/30 is up, line protocol is up (connected)
  Last input never, output 00:00:07, output hang never
FastEthernet0/46 is down, line protocol is down (notconnect)
  Last input never, output 6d23h, output hang never

输出参数告诉您端口上次看到流量的时间,这对于识别那些仅偶尔使用的端口很有用。

编辑:还值得注意(由于超出了此问题范围的原因)是“最后输入”几乎总是“从不”


我喜欢它,直到尝试为止,并注意到我的主F5上的管理界面显示“永远不会输入最新信息”,但还会显示“ 136217193数据包输入”。几分钟前我刚好在F5中,所以我非常有信心接口正在使用和正常工作。
Dave Noonan

好点了,我添加了一个编辑说明。这是预期的行为。同样,我也提出了一个新问题(networkengineering.stackexchange.com/questions/664/…)以解决您的问题。
Mike Marotta

1
@MikeMarotta因此,我们可以由此推断出该命令实际上是不好的,因为结果不可靠吗?
jwbensley

尽管最后输入几乎永远不会,但输出值应该是您所要查看的内容,这确实抓住了这一点。
YLearn

11

我喜欢@Stefan的答案,但是使用此命令行“ sh int | i(以太网| 0个数据包输入)”现在可以捕获所有以太网接口类型并过滤掉以零结尾的非零数字。他提到可能进行一些微调,所以这只是一个例子。

另一种选择是...

  sh int counters | i (Port|_0             0             0             0)

是的,需要空格。正确获取空格的最简单方法是执行“ sh int counters”并复制全零的行。这里的一个陷阱是,列表的中途从所需的Input更改为Output,我们不关心查找未使用的端口。它的优点是仅显示没有输入的端口,因此您不必像使用Stefan的方法那样清除使用中的端口。


1
使用awk。不用担心疯狂的空间。
netdad

3
我认为awk在IOS CLI中不可用。如果是这样的话,我很生气,因为我没有这么做,这肯定会很方便。
Dave Noonan

1
看我的答案。我的观点是,您应该(通过SNMP或其他方式)从设备上提取信息,或者将其输出粘贴到您喜欢的UNIX盒中,然后在那里进行工作。这样便可以使用整个世界。
netdad

4
+1,从技术上讲,您可以使用show int counters | i _0_.*_0_.*_0_.*_0_空格代替......您的答案也必须是sh int counters | i (Port|_0 0 0 0)(请注意下划线,IOS将其解释为空格)
Mike Pennington

5
正确的正则表达式在最新的IOS版本上受支持(我在12.2(55)SE7的3560上进行了此操作),因此执行您建议的最简单的正则表达式将是show interfaces counters | inc ( +0 +0 +0)
Paul Gear

11

我会抓取输出(或使用SNMP抓取甚至更好),然后使用标准的UNIX工具对其进行解析。这是一个简单的例子:

在这里,我将“ show int counters”(仅出于演示目的)的部分输出保存到了一个名为“ counters”的文件中。

[mkantows@ochofu049]$ cat counters
Port            InOctets    InUcastPkts    InMcastPkts    InBcastPkts
Gi1/0/1                0              0              0              0
Gi1/0/2      94949242720      556137619         571828          57745
Gi1/0/3       1522191492        8663327        1105299          55269
Gi1/0/4       3743856345       18565173        1275617          53658
Gi1/0/5                0              0              0              0
Gi1/0/6                0              0              0              0

现在,只需使用awk生成所有四个计数器字段均为零的所有端口的报告:

[mkantows@ochofu049]$ cat counters | awk '{if ($2 == 0 && $3 == 0 && $4 == 0 && $5 == 0) print $1}'
Gi1/0/1
Gi1/0/5
Gi1/0/6

这里的主要思想是从设备中获取您正在使用的任何数据,以便您可以进行更智能/复杂/更简单/任何解析和报告。

注意对于多个设备,使用“ screen”之类的Linux实用程序记录tty连接的输出可以非常有效地快速查找多个cisco设备上未使用的端口。(在一个日志文件中)运行类似以下的命令...,其中“ HOSTNAME”是Cisco设备主机名方案的通用组成部分。awk'{if($ 1 == HOSTNAME)|| ($ 2 == 0 && $ 3 == 0 && $ 4 == 0 && $ 5 == 0)打印$ 1}'


1
真好!有时,也很容易通过grep和传递文件sed
Stefan

确实-用任何标准UNIX工具都能完成工作。要点是“不要在路由器上做,那太痛苦了” :)
netdad

6
我不会拒绝投票,但是您真的应该研究IOS正则表达式...在注释末尾包含的CLI比将CLI吸到UNIX计算机上然后使用一些awk咒语要容易得多...show int counters | i _0_.*_0_.*_0_.*_0_
Mike Pennington

7

我是新手,所以我无法投票赞成@netdad和@mike pennington的答案-但我喜欢它们。为了进一步了解@Mike Pennington的答案,假设您最近已清除计数器,还可以运行以下命令:

switch#sh int count | i 0 +0 + 0 +0
Gi1/3                       0             0             0             0
Gi1/11                      0             0             0             0
Gi1/19                      0             0             0             0
Gi1/21                      0             0             0             0

此处的正则表达式表示“ 0”,后跟1个或多个空格,然后是“ 0”,然后是1个或多个空格,然后是“ 0”,然后是1个或多个空格,最后是“ 0”。

希望这可以帮助。


5

我总是用

show interfaces status

总结起来不错。


3
当然,这是一个很好的概述,但是由于它没有显示数据包计数器,因此我们无法查看设备是否刚刚关闭电源或已断开连接,但端口可能会不时使用。如果我只是因为当时端口已关闭或未连接而将端口用于其他目的,对于该用户可能会感到惊讶。
Stefan

啊,好吧,您明白我的意思了...我每年都会清算计数器..因此,对于我来说,一个sh int计数器可以正常工作,但是您必须
不时

我喜欢补充| ex connected一点。
Paul Gear

5

如果您需要定期执行此操作,Perl和Net :: Telnet :: Cisco就是最好的选择。您可以登录X个路由器,获取所需接口上的所有信息,解析输出,然后将其打印到文件中,或者通过Net :: SMTP通过电子邮件发送给它,或者将其打印到标准输出中。如果您愿意,我可以提供示例,但这非常简单。

另外,如果您不愿意在IOS中执行此操作,则以下TCL脚本将以一种简洁的格式为您提供所需的输出:

set show_counters [exec show interfaces counters | i 0 +0 +0 +0]
set line [split $show_counters "\n"]
foreach record $line {
    set fields [join $record " "]
    foreach field $fields {
        if { $field != 0 } {
            puts $field
        }
    }
}

我之所以这样提供,是因为与Perl相比,TCL及其操作方法[IMHO]的访问性稍差一些


5

我通常使用sh int des | ex up,它将列出所有处于关闭状态的端口


的作品,但我不得不说我觉得show interfaces status更有用的输出。
Paul Gear

4

这是我最近一直在使用的电缆,用于从至少六周未见任何活动的端口上拔下电缆:

show int | i proto.*notconnect|proto.*administratively down|Last in.* [6-9]w|Last in.*
[0-9][0-9]w|[0-9]y|disabled|Last input never, output never, output hang never

3
sh int | i ( 0 packets input)|proto|Desc

带0的前导空格将排除以0结尾的较大数字。

最好关闭(禁用)端口,直到它们被使用为止。例如,在已经打开的端口上更改交换端口访问vlan是有风险的,除非您可以确定未使用它。

输出可能如下所示,它告诉我们g8 / 18上的交换端口被0个数据包禁用,因为使用g8 / 19时最后一个计数器清零了(由于没有“ 0个数据包输入”)。

GigabitEthernet8/18 is administratively down, line protocol is down (disabled)
  Description: 3a30
     0 packets input, 0 bytes, 0 no buffer
GigabitEthernet8/19 is up, line protocol is up (connected)
  Description: 4a25.vmhost112 (vmnic5)

至于知道涉及哪个配线架插孔,请使用“描述”字段来帮助您进行记录。配线架应以一致的方式连接到交换机端口,因此易于记录,因为配线架插孔可预知。我在描述中使用了Rack-Row-Jack格式+要跟踪的主机名,但采用了一种简明的方式。4b27将是行机架4,行b,插孔27,后跟hostxyz或任何主机名。因此,我的描述为4b27.hostxyz。


3

那么使用MAC表呢?它列出了带有接口的MAC地址并对其进行了老化。您必须将列表从IOS中取出,以过滤出唯一地址列表。


3
 sh int | in is down|input never, output never

FastEthernet0 is administratively down, line protocol is down 
  Last input never, output never, output hang never
GigabitEthernet1/0/2 is down, line protocol is down (notconnect) 
GigabitEthernet1/0/4 is down, line protocol is down (notconnect) 
  Last input never, output never, output hang never
GigabitEthernet1/0/13 is down, line protocol is down (notconnect) 
  Last input never, output never, output hang never
GigabitEthernet1/0/24 is down, line protocol is down (notconnect) 
  Last input never, output never, output hang never

您可以轻松地将此转换为int | in(永远不会输出),这将更容易键入并且会得到相同的结果。
YLearn

2

好。从2900开始的所有交换机上都可以使用的设备(无需测试更早),仅显示向下的端口。

sh int | i is down

我很乐意使用,sh int status但是之后的结果是connectednotconnected,因此排除或包含对您没有任何好处,因为“连接”一词是二者的一部分,因此您可以理解故事。

就3524而言,我在以下两个命令中都得到了这一点,以使其工作清楚:

SD-LIB-C3524#sh int status

Port    Name               Status       Vlan     Duplex Speed   Type
------- ------------------ ------------ -------- ------ ------- ----
Fa0/1                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/2                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/3                      connected    10       A-Full   A-100 100BaseTX/FX
Fa0/4                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/5                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/6                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/7                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/8                      notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/9                      connected    10       A-Full   A-100 100BaseTX/FX
Fa0/10                     notconnect   10         Auto    Auto 100BaseTX/FX
Fa0/11                     connected    10       A-Full   A-100 100BaseTX/FX
Fa0/12                     connected    10       A-Full   A-100 100BaseTX/FX
Fa0/13  WiFi SD-LIB-15     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/14  WiFi SD-LIB-22     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/15  WiFi SD-LIB-16     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/16  WiFi SD-LIB-23     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/17  WiFi SD-LIB-17     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/18  WiFi SD-LIB-24     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/19  WiFi SD-LIB-18     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/20  WiFi SD-LIB-14     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/21  WiFi SD-LIB-19     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/22  WiFi SD-LIB-21     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/23  WiFi SD-LIB-20     connected    40       A-Full   A-100 100BaseTX/FX
Fa0/24  SD-LIB-3C4500-50P  connected    trunk    A-Full   A-100 100BaseTX/FX
Gi0/1                      notconnect   trunk      Auto    1000 Missing
Gi0/2                      notconnect   10         Auto    1000 Missing

SD-LIB-C3524#sh int | i is down
VLAN1 is up, line protocol is down
FastEthernet0/1 is down, line protocol is down
FastEthernet0/2 is down, line protocol is down
FastEthernet0/4 is down, line protocol is down
FastEthernet0/5 is down, line protocol is down
FastEthernet0/6 is down, line protocol is down
FastEthernet0/7 is down, line protocol is down
FastEthernet0/8 is down, line protocol is down
FastEthernet0/10 is down, line protocol is down
GigabitEthernet0/1 is down, line protocol is down
GigabitEthernet0/2 is down, line protocol is down
SD-LIB-C3524#

校正,连接是这两者的一部分,但可以排除连接以获得所需的输出。
YLearn

0

这有点作弊,但是如果所有内容都仅附加到一个终端设备上,则可以使用粘性MAC地址打开端口安全性。请过一会儿再检查一次(如果您期望有一段合理的时间来假设有人会使用该计算机或该计算机不存在),然后运行的配置将显示是否有任何人使用了该端口。我很确定您可以在每个接口上最多使用大于1的粘性Mac地址,以防万一您在同一端口上使用VoIP电话和计算机,但是我不确定。


我不记得该命令,但是您可以将最大MAC数设置为多个。
Dave Noonan

在该界面下,“ switchport port-security maximum 2”(交换端口最大安全性2)或您希望允许的任何数字。
Dave Noonan

我知道您可以通过端口安全性来更改允许的最大MAC地址,但我不知道您是否可以通过粘滞知识学习多个。
艾利·雅培

0

哦,只需键入以下内容即可:

switch 1#show ver | in uptime
switch 1 uptime is 28 weeks, 6 days, 20 hours, 19 minutes

switch 1#show inter link | in 28 weeks
Fa3/1                      28 weeks, 6 days, 20 hours, 19 minutes 16 secs
Fa3/2                      28 weeks, 6 days, 20 hours, 19 minutes 16 secs

(在运行版本12.2(20)的4500上)


0

我认为在思科环境中,最好的方法是制作一个演示版本,以了解交换机的正常运行时间以及

显示界面计费

Interface Vlan1 is disabled
Vlan810 
            Protocol    Pkts In   Chars In   Pkts Out  Chars Out
                  IP     709229   73055034     232297   33127143
                 ARP        738      44280         70       4200
FastEthernet0/1 
            Protocol    Pkts In   Chars In   Pkts Out  Chars Out
No traffic sent or received on this interface.

FastEthernet0/2 
            Protocol    Pkts In   Chars In   Pkts Out  Chars Out
               Other          0          0         19       6669
       Spanning Tree          0          0      18588    1115280
                 CDP          0          0        658     309918

1
您具体要说的是哪些字段,这如何帮助您了解是否使用了交换端口?
generalnetworkerror

0

仅使用IOS命令有点棘手-您会错过奇怪的一个。我建议像其他人一样使用snmp(solarwinds有许多您可能要看的免费工具)并监视设备数天(必要时数周)

对于您用电缆等进行的费力工作,我最大程度地减少了将交换机端口映射到跳线端口等工作的工作,是清除计数器,然后几天后使用snmp陷阱,然后在跳线板上拔出1-2几秒钟后,当我在snmp trap监视器/接收器上输入一个条目(模块y上的端口x断开)时,我再次做同样的事情来验证(不是有人偶然关闭了其中一个端口上的设备)。24端口面板可能需要5分钟-因此这是相当快的。对于死者-再回去一次。如果它们仍然没用,并且计数器上没有任何变化,那么可以安全地假定该端口实际上未被使用。


0

我通常使用“显示界面状态”及其变体,但我也使用整洁的开源软件“ Switchmap”来提供界面的简单图形视图。这样做的一大好处是,如果端口处于打开/关闭状态,它将告诉您上一次在其上进行通信的时间有多久,您可以从那里拨打电话,以决定是否应重复使用它。

http://sourceforge.net/projects/switchmap/

这样可以节省一些输入:-)


0
test cable diagnostics tdr interface *intname here*

这应该向您显示连接到交换机端口的电缆是否实际连接到任何东西。不论其地位。替换testshow以获得状态。


1
这确实与没什么不同show int status。如果我已经拔掉笔记本电脑回家的电源,那么早上可能会重新分配我的端口。
Ricky Beam

0

我们公司遇到这个问题。我们使用“ show arp”和“ show mac address-table”命令输出的相关性来关联前提条件中所有计算机/设备的MAC地址。

首先,您需要列出网络中设备的IP和MAC列表,并使用上述命令将它们与相应的接口相关联...


0

显示IP界面简介是我个人的最爱。

使您更容易查看。如果没有,那里有很多工具可以帮助跟踪许多交换机上的端口使用情况。


-1

在思科设备上,您可以使用;

sh int status

在HP设备上,命令为;

sh int brief

-2

我认为您正在寻找基于状态的总和?至少听起来像你的问题。

show interfaces status | count notconnect|connected

给您一个很好的连接或不连接的信息。


OP似乎专门询问未使用哪些交换机端口,因此他可以将新设备连接到该设备,而不是有多少未使用的设备。
Teun Vink
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.