7

最近,一位网络工程师和我的同事找到了我,他想将他的次要网络管理职责交给初级帮助台技术人员。需要管理的特定位置在其单站点物业上充当租户的 ISP,因此每天都会进行很多小调整。

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

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

尽管在寻找解决方案时,似乎大多数人都喜欢 SNMP。 那,或者,他们的具体情况将他们推向了 SNMP 的方向。

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

4

9 回答 9

4

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,或者至少在基本许可证中不支持它。

Telnet 确实是唯一的出路,除非您只针对一小部分设备型号。为了给您一些比较,思科自己的 CiscoWorks 网络管理软件使用 Telnet 连接到托管设备。

于 2009-05-02T04:33:08.573 回答
3

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

于 2009-02-27T15:01:08.787 回答
3

我已经使用 Cisco 交换机完成了相当数量的现实世界 SNMP 编程,并发现在 Net-SNMP 之上的 Python 是相当合理的。这是通过 Google 书籍通过 Net-SNMP 和 Python 上传新 Cisco 配置的示例: Cisco Switch Upload via Net-SNMP and Python。我应该透露我是链接中引用的这本书的合著者。

每个人的里程可能会有所不同,但我个人不喜欢使用expect,更喜欢使用 SNMP,因为它实际上被设计为“简单网络管理协议”。在紧要关头,expect 是可以的,但它不会是我的第一选择。一些公司使用 expect 的原因之一是开发人员只是习惯了使用 expect。我不一定会因为有人自动化 telnet 或 ssh 的例子就绕过 SNMP。先自己试试吧。

可能会发生一些真正可怕的事情,这可能也不明显。因为expect等待输入,在合适的条件下会出现非常细微的问题,很难调试。这并不意味着一个非常有经验的开发人员不能用 expect 开发可靠的代码,但也需要注意这一点。

您可能想要查看的另一件事是使用多处理模块编写非阻塞 SNMP 代码的示例。因为这是我在 stackoverflow 上的第一篇文章,所以我不能发布多个链接,但如果你用谷歌搜索它,你可以找到它,或者另一个关于使用 IPython 和 Net-SNMP 的文章。

编写 SNMP 代码时要记住的一件事是,它涉及阅读大量文档并进行反复试验。在 Cisco 的情况下,文档非常好。

于 2010-04-06T06:15:08.997 回答
1

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

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

于 2008-10-24T18:21:37.537 回答
1

我发现 SNMP 对管理来说很痛苦。如果您只需要获取一些数据,那就太好了;如果您需要更改或大量使用它可能非常耗时。就我而言,我对 CLI 很满意,因此 Telnet 方法效果很好。我编写了一些 Python 脚本来使用Telnetlib对各种网络设备执行管理任务

于 2008-10-24T18:49:22.537 回答
1

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

在现有的配置管理系统方面,两个商业玩家是 HP Opsware 和 EMC Voyence。两者都可能满足您的需求。我不知道实际上支持部署更改的许多开源解决方案。(例如, RANCID只进行配置监控,而不是预登台和部署配置更改)。

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

于 2008-11-01T22:41:45.000 回答
0

旁注:在重新发明轮子编写另一个服务供应系统/网络管理系统之前,请尝试寻找现有的。我知道很多不同程度的灵活性/功能的商业解决方案,但我确信有很多开源解决方案。

于 2008-10-24T18:49:51.240 回答
0

思科已包含帮助台应用程序的菜单选项。基本上你telnet到盒子,它会提供一个漂亮的干净菜单(按1、2、3)。有关更多信息,请查看此链接:

http://www.cisco.com/en/US/docs/ios/12_2/configfun/command/reference/frf001.html#wp1050026

于 2009-11-06T18:52:34.453 回答
0

对期望的另一票。

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

如果由于某种原因您不能直接使用 ssh,请考虑将启用 ssh 的串行控制台服务器连接到防火墙的控制台端口并以这种方式进行配置。

于 2009-12-03T00:25:52.953 回答