Network programming 以编程方式管理Cisco;Telnet与SNMP?

Network programming 以编程方式管理Cisco;Telnet与SNMP?,network-programming,telnet,snmp,cisco,Network Programming,Telnet,Snmp,Cisco,最近,一位网络工程师与我接洽,他是一位同事,他想把次要的网络管理职责交给一名初级技术支持人员。需要管理的具体位置就像是其单站点物业上租户的ISP,因此每天都会有很多小的调整 我想给他写一个winform应用程序来现场管理32台Cisco设备会很有帮助。我想最初提供的功能可以修改访问控制列表、端口VLAN分配和每个VLAN的带宽限制。。。因为它被认为是有价值的,所以增加了更多 我最初的想法是用网络设备模拟telnet会话;利用我的网络工程师对命令行/IOS交互的熟悉程度。我自己需要最少的时间来学习

最近,一位网络工程师与我接洽,他是一位同事,他想把次要的网络管理职责交给一名初级技术支持人员。需要管理的具体位置就像是其单站点物业上租户的ISP,因此每天都会有很多小的调整

我想给他写一个winform应用程序来现场管理32台Cisco设备会很有帮助。我想最初提供的功能可以修改访问控制列表、端口VLAN分配和每个VLAN的带宽限制。。。因为它被认为是有价值的,所以增加了更多

我最初的想法是用网络设备模拟telnet会话;利用我的网络工程师对命令行/IOS交互的熟悉程度。我自己需要最少的时间来学习Cisco IOS惯例

尽管在搜索解决方案时,似乎大多数人都喜欢SNMP。这或者说,他们的特定环境将他们推向了SNMP的方向


我想知道我是否忽略了SNMP的一个明显优点我应该使用SNMP吗?为什么或者为什么不?

SNMP不错,但它可能无法完成您需要它完成的所有任务。根据您使用的库以及它如何隐藏与SNMP交互的详细信息,您可能很难找到要更改的MIB的正确部分,甚至很难知道要更改什么或如何更改它们以执行您想要的操作


不使用SNMP的一个原因是,您可以使用进行所需的所有配置。与与SNMP交互相比,将要发送到使用它的设备的命令捆绑起来要容易得多。

我发现SNMP对管理来说是一个难题。如果你只需要抓取一点数据,那就太好了;如果你需要改变一些东西或者大量使用,这可能会非常耗时。在我的例子中,我很熟悉CLI,因此Telnet方法可以很好地工作。我已经编写了一些Python脚本,使用

Sidenote在各种网络设备上执行管理任务:在重新开始编写另一个服务供应系统/网络管理系统之前,请尝试寻找现有的。我知道有很多商业解决方案具有不同程度的灵活性/功能性,但我确信有很多开源解决方案。

与telnet相比,SNMP在相关设备上的CPU使用率相当高;我会尽可能推荐telnet。(如前一个回答中所述,IOS XR XML API会很好,但据我所知,IOS XR仅部署在高端运营商级路由器上)

就现有的配置管理系统而言,两个商业参与者是HP Opsware和EMC Voyence。两者都可能满足你的需要。我不知道有多少开源解决方案实际上支持部署更改。(例如,只进行配置监视,而不进行预暂存和部署配置更改)


如果您打算推出自己的解决方案,我建议您与您的网络管理员坐下来,为他提供的服务提出一个最佳实践部署模型(例如,标准化ACL、QoS队列和VLAN名称;ACL中的类似条目对不同的客户具有相同的功能,等等)。在开始设计之前,确保所有现有部署的配置都符合此BP,这将使问题更易于管理。祝你好运。

我不会使用SNMP,而是看一种叫做“expect”的小语言。它为这些路由器提供了一个非常好的expect/response处理器。

SNMP对于从Cisco设备中获取信息非常有用,但对于控制设备却不是很有用。(虽然从技术上讲,您可以使用SNMP和TFTP的组合将新配置推送到Cisco IOS设备。但是,发送一个全新的配置对于控制路由器或交换机来说是一个非常简单的工具)

另一位评论员提到了Cisco IOS XR XML API。需要注意的是,IOS XR XML API仅在运行IOS XR的设备上可用。IOS XR仅用于少数Cisco高端运营商级设备,因此对于99%的Cisco路由器和交换机,IOS XR XML API不是一个选项

其他可能是SSH或HTTP(许多Cisco路由器、交换机、AP等都有可选的web界面)。但我不推荐这两种。据我所知,web界面在不同设备之间并不十分一致,而且相当多的Cisco设备不支持SSH,或者至少在基本许可证中不支持SSH


Telnet确实是唯一的选择,除非你只针对一小部分设备型号。为了给您一些可供比较的东西,Cisco自己的CiscoWorks网络管理软件使用Telnet连接到受管设备。

Cisco提供了帮助台应用程序的菜单选项。基本上,你可以远程登录到这个盒子,它会显示一个干净的菜单(按1、2、3)。有关更多信息,请查看此链接:


又一次投票支持expect

此外,您不希望允许通过telnet或SNMP配置防火墙-ssh是唯一的方法。原因是ssh对其有效负载进行加密,并且不会将特权管理凭据暴露给潜在的拦截


如果由于某种原因不能直接使用SSH,请考虑将一个启用SSH的串行控制台服务器连接到防火墙的控制台端口并配置它。

< P>我已经用Cisco交换机做了一个合理数量的真实世界SNMP编程,并且在网络SNMP之上找到Python是相当合理的。下面是一个通过Google books通过Net SNMP和Python上传新Cisco配置的示例:。我应该透露我是链接中引用的那本书的合著者

每个人的相似性可能不同,但我个人不喜欢使用
expect
,而更喜欢t