只有ssh访问权限,确定设备是路由器还是交换机(思科和瞻博networking)

在我们的networking上有一些思科和瞻博networking设备,我需要做一个python脚本来确定它们是什么:交换机路由器

我有SSH访问,所以我可以show version和parsing“JUNOS”或“思科”找出供应商。 但我不知道如何找出设备是路由器,交换机还是其他的。

感谢您的帮助!

可能很难分辨出来,因为许多作为交换机销售的模型都会包含路由function,而且还可能出现路由器像交换机一样使用的情况 – 即它们不是路由stream量。 所以即使你能弄清楚设备的function,你也确实想知道它在networking中的function。

你可能有很多设备,但是你可能没有那么多不同的型号,所以手动parsingshow version的输出可能足以弄清楚你的设备可以做什么。

除非您只是试图填充资产数据库,否则您将不得不查看configuration并确定每个设备实际configuration的内容。

在Cisco设备上,可以使用CDPparsing设备function(请参阅在cisco设备上,如何显示function? ),但是您的networking上可能已禁用CDP。

最好是检查Vlan接口是否存在(意味着可切换的设备)以及是否存在fastEthernet X / X / Xtypes接口(可能是可切换的路由器)。

通过使用这两个事实,您可以非常准确地了解设备是什么,但它是思科特定的。

您还可以使用思科function导航器/瞻博networking参考来构build使用型号名称的检测(如果您知道您的networking上有哪些设备,大多数时候您的型号数量有限),这样做会更准确,但特定于您的networking。

优点是这一次是通用的,并不是一个品牌特有的,不存在错误检测的风险。

或者,您可能希望使用CMDB或库存软件来准备这些信息供以后使用,那么您只需查询数据库即可检查其是交换机还是路由器。

有很多方法可以做到这一点。

即使您需要尝试多个string,我的第一select也是SNMP。 通话速度更快,不易受代码版本差异的影响。 你可以下载一个免费的太阳风,并在不到一个小时内完成。 脚本SNMP交互比ssh / cli更容易。

接下来我会使用某种期望的包装。 我偏向于perl的东西,因为它更稳定,更有据可查。 你也可以编写一个expect脚本,并从python中调用它。

显示版本是显而易见的命令,但它可以不同设备之间。 你有可能的平台列表吗? 您可以使用正则expression式从给出列表中sorting,然后将其他所有内容放到一个未知的堆中。 当您sorting未知时更新您的脚本自动find它们。